web-dev-qa-db-ja.com

IE8はquerySelectorAllをサポートしていません

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

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

var titleCheckBox = document.querySelectorAll("");

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

29
Roman Makhlin

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

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

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

    互換モードは、X-UA-Compatibilityメタタグ。互換モードで問題が発生している場合、これを回避するには良い方法です。次の行をコードに追加します。

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

上記のいずれか(または両方)が問題になる可能性がありますが、私の推測では、問題は互換モードであると考えられます。イントラネットサイトでの互換モードの設定は驚くほどほとんど知られておらず、ベテランの開発者でさえ多くの人を引き付けます。

50
Spudley

IE8は、標準モードでquerySelectorAll()のみをサポートします。 [〜#〜] msdn [〜#〜] から:

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

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

12
BoltClock