classList (DOMTokenList) の実装状況
HTML5では従来のW3C DOM APIに加え、以前から実装されていたが仕様がなかったものや、まったく新しい仕様が定義されています。今日は、それらのひとつであるclassList
について触れます。
classList
はHTML5で初めて定義された新しいインタフェイス、DOMTokenList
がとる実体のひとつです。サンプルコードや詳細はMozilla Developer Streetの記事やMDCの項目が参考になるでしょう。
classList
はいち早くMozillaが実装を行い、Firefox 3.6.0 (rv:1.9.2)から利用できるようになっていました。しかし、他のブラウザ(レンダリングエンジン)には実装されていない状況が続いていました。
つい先日、この状況が変化しました。WebKitに実装が入ったのです(該当バグ)。これでSafariやGoogle ChromeといったWebKit利用ブラウザの次期バージョンでは、classList
が利用可能になるかもしれません。
Operaは直近のDevelopment Snapshot (Presto 2.6.35, Build 9053)では未実装です。Presto 2.6の実装状況一覧でも実装予定は明言されていませんでした。
IEは9 Beta 1(ないし PP5、9.0.7930.16406)では未実装です。フィードバック フォーラムに要望はあがっているものの、Microsoftからのコメントは対応の明言を避けており、実装がなされるかどうかは不透明です。
これまでDOMTokenList
が提供しているような機能を実現するためには、className
などを用いて取得したclass
属性値を、正規表現などによって分解・再構築する必要がありました(MJLでも内部でclassName
をいじるための各種関数を定義しています)。
DOMTokenList
は、そうした手間やネイティブ実装であることによる高速化を期待できるAPIとして有用です(が、用途によっては取り回しにくい面も持ちあわせています――今後のエントリで補足できればと思います)。HTML5が定義する範囲、その広範さの一例として取り上げてみました。