使用AngularJS应用程序在IE8中出现奇怪的'未定义的ChildNodes'错误

时间:2013-10-30 12:47:03

标签: javascript internet-explorer angularjs internet-explorer-8

TypeError: Unable to get value of the property 'childNodes': object is null or undefinedundefined

在对我的应用程序进行一长串修改以支持IE8之后,包括: 通过W3C验证器以编译形式运行所有视图,设置xdomain.js proxy以支持CORS API调用,进行一些常规重组等。 我非常失望地发现IE8仍然会在我身上抛出这个奇怪的错误,而IE9的效果非常好。

Making changes to the Angular-seo package以防止客户端是IE浏览器时运行。

关于它可能是什么的任何想法?。

3 个答案:

答案 0 :(得分:2)

确保正确关闭所有标签。我花了好几个小时试图弄清问题是什么,直到我在我的代码中注意到这一点:

<span>some text<span>

我终于意识到我没有正确关闭<span>标签。之后一切正常。

答案 1 :(得分:1)

如果没有您运行的代码,则有点困难。但是,有一个用于调试的命令。首先,您需要确定哪个变量可能不包含对象[即 &#34;对象为空或未定义&#34;]。 例如,父,那么你可以使用

//next look to see if parent is something
if('undefined'==(typeof parent)) alert("variable empty:parent");

一旦你发现一些你想要成为对象的空的东西,那么你可以从那里追溯。还可以使用浏览器调试工具来识别错误的行号。

通常,如果使用子节点,您可能没有正确的级别,或者您需要作为数组访问,即您需要类似的东西。

parent.childNodes[0].childNodes[0].value

在IE中,您还处理不受支持的功能。所以getElementById会起作用,但其他一些类似的则不行。 typeof也很有用。

//next ensure function supported
if( 'undefined'==(typeof document.getElementsByClassName) ){
    alert("Not Supported");                  // notice ^ no () required here
    //...add code to handle differently when not supported
}

这可能会揭示您是否可以使用功能

答案 2 :(得分:1)

IE8太旧且不符合标准,不支持childNodes []。 http://quirksmode.org/dom/core/#t70