29

を使用しようとしましdocument.querySelectorAll()たが、IE8はエラーをスローします。

オブジェクトはこのプロパティまたはメソッドをサポートしていません

var titleCheckBox = document.querySelectorAll("");

ここhttp://www.quirksmode.org/dom/w3c_core.html#t13に書かれているように、IE8 はこのメソッドをサポートしています。私が間違っていることは何ですか?

4

2 に答える 2

50

ページが Quirks モードまたは互換モードになっていないことを確認します。F12 開発ツールを使用してこれを確認できます。F12 を押して、結果のウィンドウの右上隅を見てください。モードの説明に「Compatibility」または「Quirks」と表示されている場合は、問題が見つかりました。

  • Quirks モード:これは通常、Doctype の欠落または破損によってトリガーされます。この場合は、ページが次のように始まっていることを確認してください。

    <!DOCTYPE html>
    
  • 互換モード (IE7 モード):ページをローカルで表示している場合 (つまり、テスト用にローカル マシンで実行している場合、またはローカル ネットワーク上でページを実行している場合) にトリガーされる可能性があります。この場合、無効にする必要がある IE 構成設定によってヒットしています。[ツール] メニューに移動し、[互換表示設定] オプションを選択します。互換性オプションのチェックを外すと、ページが機能し始めます。

    Compat モードは、X-UA-Compatibilityメタ タグによってトリガー (または回避) することもできます。互換モードで問題が発生した場合は、これを回避する良い方法です: コードに次の行を追加します。

    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    

上記のいずれか (または両方) が問題である可能性がありますが、私の推測では、問題は互換モードです。compat-mode-on-intranet-sites 設定は驚くほどほとんど知られていないため、経験豊富な開発者でさえ、多くの人を惹きつけています。

于 2013-06-04T14:33:22.230 に答える
12

IE8querySelectorAll()は標準モードでのみサポートします。MSDNから:

Selectors API は、 Selectors API仕様の一部として定義されており、IE8 標準モードで表示される Web ページでのみ使用できます。

ページに適切な DOCTYPE 宣言がない可能性があります。追加する必要があります。

于 2013-06-04T14:28:18.287 に答える