如何解决 IE 问题“parentNode”为空或不是 Ext.js3.1.1 的对象?

Posted

技术标签:

【中文标题】如何解决 IE 问题“parentNode”为空或不是 Ext.js3.1.1 的对象?【英文标题】:How to fix the IE issue 'parentNode' is null or not an object with Ext.js3.1.1? 【发布时间】:2014-05-22 01:24:07 【问题描述】:

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

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

它适用于其他浏览器。

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

并且堆栈跟踪类似于this closed thread

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

window > panel > EditorGrid > FormPanel > Combobox

【问题讨论】:

【参考方案1】:

这个补丁修复了我的问题。它只是在调用其方法之前覆盖添加检查parentNode 的函数。我将此代码 sn-p 添加到在 Extjs 之后运行的 fixs.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;
    
);

请注意,理想情况下我应该调查为什么elementparentNode 为空,但这个修复对我来说已经足够好了。可能其中一个扩展元素正在销毁窗口之前销毁子项。

【讨论】:

在我看来这是库中的一个错误,元素不一定有父元素(例如文档元素)。 可能。 API for Ext.Element class 没有具体说明 parentNode

以上是关于如何解决 IE 问题“parentNode”为空或不是 Ext.js3.1.1 的对象?的主要内容,如果未能解决你的问题,请参考以下文章

IE9 JavaScript 错误:SCRIPT5007:无法获取属性“ui”的值:对象为空或未定义

IE浏览器报错 ‘Rowspan’ 为空或不是对象

当我说可以为空或为空时,我不断收到“db context null”,我该如何解决?

highcharts的饼图在IE浏览器上无法显示,提示‘undefined'为空或不是对象,其他的游览器都可正常显示

Microsoft JScript运行时错误 document.images.slide.filters为空或不是对象

为啥会出安全警告 错误: 'files.0' 为空或不是对象