Abbread

HTMLabbr要素に指定されたtitle属性を、title属性が省略された他のabbr要素へばらまく小さなスクリプトを必要に迫られて書いていた。名前はabbrとspreadを混ぜてAbbreadとした。

abbr要素を使う場合、最初のそれだけにtitle属性を付けるなどということをよくやる。仕様によるとこのあたりの書き方については以下の一文で触れられている。

Providing an expansion in a title attribute once will not necessarily cause other abbr elements in the same document with the same contents but without a title attribute to behave as if they had the same expansion. (参考訳: title属性を使って完全表記を一度提供したとしても、同じ文書内の同じ内容を持つabbr要素がtitle属性を持たない場合にあたかも同じ完全表記を持つように振る舞ってくれるとは限らない。)

4.5.9 The abbr element

つまり、最初のabbr要素だけにtitle属性を書くといった省略した書き方は推奨されていない。Every abbr element is independentとも続けて書いてある通り、それぞれは独立していると考えるべきなわけだ。

とはいうもののいちいち書いていたら頭がおかしくなることは確実だ。だからといってabbr要素を使わないという選択も微妙なので、ブラウザーに頑張ってもらうだけで良いことにした。

この小さなライブラリーをウェブページに読み込むと、

<p><abbr title="HyperText Markup Language">HTML</abbr> is dead, long live <abbr>HTML</abbr>!</p>

が、

<p><abbr title="HyperText Markup Language">HTML</abbr> is dead, long live <abbr title="HyperText Markup Language">HTML</abbr>!</p>

となる。


こういったtitle要素をばらまくというだけでなく、もう一歩踏み込んだものがブラウザーの機能としてあってもよさそうだ、という考えが頭をかすめた。abbrdfn要素などの既存のHTMLマークアップを使って、そのウェブページ内でのみ機能する小さな辞書機能を構築できたりすると、技術文書などでは非常に有用だろう。

ブラウザー・アプリや拡張でやると、そういった技術文書のウェブサイトを閲覧する際に特定のアプリや拡張が必要になってしまう(かもしれない)ので、別の問題が発生してしまいそうだ。とはいうものの日々必要とされる機能であるとも思えない。やはり必要になったら自分たちででっち上げるのが無難そうだ。