セレクターAPI-IE8b1およびWebkit

IE8b1は、非常に興味深い仕様であるSelectors APIのサポートを導入しています 。 これまでのところ、これはW3Cのワーキングドラフトですが、 IEとWebkitはすでに仕様を実装しています。PrestoとGeckoはそれほど長くかかりません。
更新 :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パラメーターとして無視します。
ここにあります


Source: https://habr.com/ru/post/J25561/


All Articles