1

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

IE8 をサポートするためにアプリケーションに多くの変更を加えた後、W3C バリデーターを介してコンパイルされた形式ですべてのビューを実行し、CORS API 呼び出しをサポートするようにxdomain.js プロキシを設定し、いくつかの一般的な再構築を行いました。 IE9 が完全に正常に動作しているのに、IE8 がまだこの奇妙なエラーをスローしていることを知って、私は非常に失望しました。

クライアントが IE ブラウザーの場合に実行されないように、Angular-seo パッケージに変更を加えます。

それが何であるかについてのアイデアはありますか?

4

3 に答える 3

1

実行しているコードがなければ、少し難しいです。ただし、デバッグに使用するコマンドがあります。最初に、どの変数がオブジェクトを含まない可能性があるかを特定する必要があります [つまり、「オブジェクトは null または未定義です」]。たとえば、親の場合、次を使用できます

//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
}

これにより、関数を使用できるかどうかが明らかになる場合があります

于 2013-10-30T15:09:37.350 に答える
1

IE8 は非常に古く、標準に準拠していないため、childNodes[] をサポートしていません。http://quirksmode.org/dom/core/#t70

于 2015-03-31T19:14:18.557 に答える