更新 :Firefox開発者は、リリース3.0はSelectors APIのサポートを期待していないと説明しましたが、3.5ではおそらく実装されるでしょう。
では、何がありますか? 仕様には、IHTMLElement'aインターフェイスの2つの新しいメソッド、
querySelector()
と
querySelectorAll()
が含まれています。これらのメソッドは、有効なCSSセレクターを文字列としてパラメーターとして受け取ります。
querySelector
は、指定されたCSSセレクターに一致する最初のHTMLElementへのリンクを返します。
querySelectorAll
は、指定されたCSSセレクターに一致する要素を持つ
querySelectorAll
返します。
したがって、DOMでドキュメントを検索するための新しいエレガントで便利な方法があります。
document.getElementsByClassName
ような発明については忘れることができ
document.querySelectorAll(".myClass")
を実行し、このクラスのすべての要素を取得するだけです。
現時点では、これらのメソッドはほとんどすべての 一般的な jsフレームワークで使用できますが、セレクターAPIをサポートしないブラウザーでは同じ原理で動作します-DOMをバイパスし、指定されたCSSセレクターに一致する要素を探します。
ライブラリのパフォーマンスとSelectors APIのネイティブサポートを比較するために、Webkitの作成者はテストケースを作成しました。 WebkitとIE8b1の両方の結果は印象的です。
ただし、セレクターAPIはCSSセレクターのブラウザーサポートのレベルによって制限されることに注意してください。 IE8b1 CSS3 selector
:last-child
サポートせず、
document.querySelectorAll("body:last-child")
何も返しません。
軟膏に小さなハエがないわけではありません-IE8b1はSelectors API仕様を部分的にしかサポートしていません。MSDNの記事からの引用です:
Internet Explorer 8はXHTMLドキュメントを正式にサポートしていないため、NSResolverパラメーターなどのW3C Selectors API仕様の名前空間機能をサポートしていません。
しかし、名前空間が使用されていないサイトの場合、軟膏のこのフライは軟膏を台無しにしません。
また、興味深い事実-Selectors APIの実装は、javascriptが正常に実装された場合、訪問したページに関する情報の盗難の潜在的な脅威をもたらします。ユーザーはすでにこのページにアクセスしています。 仕様は 、セレクターAPIを実装する製造業者にこの問題の解決策を残します。
その結果、IE8b1は
:visited
visitおよび
:link
疑似クラスをquerySelector / querySelectorAllパラメーターとして無視します。
ここに例があります !