選択子API

Selectors API (Web)

[35] Selectors API (選択子API) は、 CSS などで使われる選択子 (セレクター) を使って DOM節点にアクセスするための API です。

仕様書

[47] かつては単独の仕様書が W3C勧告となっていましたが、現在は DOM Standard に統合されています。

メソッド

[37] ParentNode インターフェイスに次のメソッドがあります。

歴史

前史

[38] いくつかの JavaScript ライブラリーは、 getElementsBySelector のような機能を独自に実装していました。それを核に様々な機能を持った jQuery は00年代末から10年代初めにかけて大流行しました。

[39] Web Applications 1.0 (現 HTML Standard) は、そのような機能が必要であると指摘していました。ただし実際の API の規定にはまだ至っていませんでした。

誕生

[40] W3C Web APIs WG (現 WebApps WG) が Selectors API を標準化することになりました。

[41] 提供する機能についてはあまり大きな議論は無かったようですが (ただしXML名前空間への対応は途中で実装困難と判断され、削除されています。)、 メソッド名をどうするかが問題となり、大論争となっています。

[1] Selectors API <http://www.w3.org/TR/2006/WD-selectors-api-20060525/> (名無しさん 2006-06-10 14:09:00 +00:00)

[2] Selectors API naming from Anne van Kesteren on 2007-01-25 (public-webapi@w3.org from January 2007) (Anne van Kesteren (annevk@opera.com) 著, 2007-01-27 12:55:58 +09:00 版) <http://lists.w3.org/Archives/Public/public-webapi/2007Jan/0054> (名無しさん 2007-01-27 03:56:31 +00:00)

[3] Influence a future W3C Standard: Selectors API - SitePoint Forums (2007-01-27 13:04:33 +09:00 版) <http://www.sitepoint.com/forums/showthread.php?t=454192> (名無しさん 2007-01-27 04:06:36 +00:00)

[4] Selectors API Naming Debate - Lachy’s Log (2007-06-24 16:58:06 +09:00 版) <http://lachy.id.au/log/2007/06/naming-debate> (名無しさん 2007-06-24 09:01:31 +00:00)

[5] Selectors API Naming Debate Revisited - Lachy’s Log (2007-09-07 22:50:45 +09:00 版) <http://lachy.id.au/log/2007/08/naming-debate-revisited> (名無しさん)

[6] Results of Questionnaire Selectors API Method Names - Web-Based Straw-poll and Balloting System (2007-09-05 22:11:14 +09:00 版) <http://www.w3.org/2002/09/wbs/38482/selectorsNames/results> (名無しさん)

[7] Selectors API (2007-10-19 23:39:31 +09:00 版) <http://www.w3.org/TR/2007/WD-selectors-api-20071019/> (名無しさん)

[8] Selectors API (2007-12-21 08:17:20 +09:00 版) <http://www.w3.org/TR/2007/WD-selectors-api-20071221/> (名無しさん)

[9] dojo.query: A CSS Query Engine For Dojo | The Dojo Toolkit (2007-12-31 20:26:51 +09:00 版) <http://dojotoolkit.org/node/336> (名無しさん)

[10] Selectors APIがLast Callへ - vantguarde - web:g ( 版) <http://web.g.hatena.ne.jp/vantguarde/20081030/1225341506>

[11] Selectors API ( 版) <http://www.w3.org/TR/2008/WD-selectors-api-20081114/>

[12] Firefox 3.1 for developers - MDC ( 版) <https://developer.mozilla.org/ja/Firefox_3.1_for_developers#.E6.96.B0.E3.81.97.E3.81.8F.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E6.A9.9F.E8.83.BD_2>

Selectors API が文書と要素の両方に追加されました。 document.querySelector()、 document.querySelectorAll()、element.querySelector()、及び element.querySelectorAll() を参照してください。

Level 2 への動き

[42] メソッド名は大論争になったものの、それさえ収まれば標準化と実装はすぐに進みました。 更に追加の機能を Level 2 として規定しようとの動きがでてきます。

[13] [selectors-api] Summary of Feature Requests for v2 (Lachlan Hunt 著, 版) <http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/1198.html>

[14] Selectors APIのmatchesSelectorと、動的なページでのイベント処理 - 素人がプログラミングを勉強するブログ ( 版) <http://d.hatena.ne.jp/javascripter/20091018/1255889085>

[15] Selectors API Level 2 ( 版) <http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api2/Overview.html?content-type=text/html;%20charset=utf-8>

[16] Selectors API 2 Status (Lachlan Hunt 著, 版) <http://lists.w3.org/Archives/Public/public-webapps/2009OctDec/0478.html>

[17] IRC logs: freenode / #whatwg / 20090925 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20090925#l-178>

[18] Selectors API Level 1 ( 版) <http://www.w3.org/TR/2009/CR-selectors-api-20091222/>

[19] Selectors API Level 2 ( 版) <http://www.w3.org/TR/2010/WD-selectors-api2-20100119/>

[20] Selectors API Level 2 ( ( 版)) <http://www.w3.org/TR/2012/WD-selectors-api2-20120628/>

[21] IRC logs: freenode / #whatwg / 20120614 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20120614#l-755>

[22] IRC logs: freenode / #whatwg / 20121121 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20121121#l-631>

[23] IRC logs: freenode / #whatwg / 20121127 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20121127#l-391>

[24] Selector Parsing for Selectors API ( (Lachlan Hunt 著, 版)) <http://lists.w3.org/Archives/Public/www-style/2012Oct/0832.html>

[25] Selectors API Level 1 ( ( 版)) <http://www.w3.org/TR/2012/PR-selectors-api-20121213/>

[26] Re: [selectors-api] Consider backporting find() behavior to querySelector() ( (Lachlan Hunt 著, 版)) <http://lists.w3.org/Archives/Public/public-webapps/2012AprJun/1285.html>

[27] [selectors-api] All Issues Resolved ( (Lachlan Hunt 著, 版)) <http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0200.html>

[48] Level 2 の開発では、メソッド名の命名問題が再燃したりもしました。 :scope 擬似クラスの命名も問題になりました。

DOM Standard への統合

[43] Level 2 の開発と実装がなかなか進まない中、曖昧だった W3C DOM にかわって厳密かつ現実的な API を規定する DOM Standard が完成しており、 Selectors API の機能と分量からそこに統合することが望ましいと考えられるようになりました。

[44] Selecetors API の編集者の lachlanhunt が2013年の年始に統合を試み、 同年9月に DOM Standard の編集者の Anne がこれを引き継ぎ、 Selectors API は (Level 2 の新機能も含めて) DOM に統合されることとなりました。

[45] W3CSelectors API Level 2 も9月には WG Note として出版され、正式に廃止されています。

[46] しかしながら、 Level 2 の新機能の実装はまだ進んでいません。

[49] Group common selectors algorithms in order to add a note that namespa… · whatwg/dom@dc355c6 ( 版) <https://github.com/whatwg/dom/commit/dc355c6036b1b37bbd4c86827cacf6459f629c5e>

[50] Comment out query/queryAll/Elements for now · whatwg/dom@10b6cf1 ( 版) <https://github.com/whatwg/dom/commit/10b6cf1ba02806220d5461a3bdb7939728b73635>

[51] Align with changes in Selectors ( (annevk著, )) <https://github.com/whatwg/dom/commit/1594aa52357371354780750413ad88e9e8a2b56b>

[52] Align with Selectors (annevk著, ) <https://github.com/whatwg/dom/commit/3f2620f52e8d192860c3460d8a4d41385befb545>

[53] Align with Selectors by annevk · Pull Request #573 · whatwg/dom () <https://github.com/whatwg/dom/pull/573>