如何修复IE问题' parentNode'是null或不是Ext.js3.1.1的对象?

时间:2014-05-22 01:24:08

标签: javascript internet-explorer dom extjs extjs3

我试图破坏IE上的Extjs 3.1.1窗口时遇到此问题。错误说:

  • 在IE8上:' parentNode'是null或不是对象
  • 在IE9上:SCRIPT5007:无法获取属性的值' insertBefore':object为null或undefined ext-all-debug.js,第5533行字符10

它适用于其他浏览器。

此方法引发了异常: Ext.element:insertAfter()

堆栈跟踪类似于this closed thread

组件层次结构如下所示(某些组件已扩展):

window > panel > EditorGrid > FormPanel > Combobox

1 个答案:

答案 0 :(得分:1)

这个补丁解决了我的问题。它只是覆盖了在调用其方法之前添加parentNode检查的函数。我将此代码段添加到Extjs之后运行的fixes.js文件中。

Ext.override(Ext.Element, {

    /**
    * Inserts this element after the passed element in the DOM
    * @param {Mixed} el The element to insert after
    * @return {Ext.Element} this
    *
    * @overrides  to fix IE issue of "parentNode null or not an object".
    */
    insertAfter: function(el){
        el = Ext.getDom(el);
        if (el && el.parentNode) {
            el.parentNode.insertBefore(this.dom, el.nextSibling);
        }
        return this;
    }
});

请注意,理想情况下我应该调查element parentNode为何为空,但此修复对我来说已经足够了。可能其中一个扩展元素是在窗口被破坏之前销毁子项。