* img 要素・object 要素・input 要素 usemap 属性 (HTML, XHTML 1)
[10] [[HTML]] の [CODE(HTMLe)[[[img]]]] 要素および [CODE(HTMLe)[[[object]]]]
要素および [CODE(HTMLe)[input]] 要素の [DFN[[CODE(HTMLa)[usemap]] 属性]]は、
[[画像写像]]を要素に関連付けます。
[11] 仕様書:
- [[HTML 4]]
--
[[#comment]]
** 属性値
[12] この属性の値は [CODE(SGML)[%[[URI]]]] ([[URI参照]]) です。
HTML 4 仕様書には[Q[値は [CODE(HTMLe)[map]] 要素の [CODE(HTMLa)[[[name]]]] 属性と一致しなければならない]]とか書かれていますが、
無理です。
実際には、 [CODE(HTMLa)[name]] 値を[[素片識別子]]とした URI 参照とします。
[13] この属性は省略可能です。
省略するとクライアント側画像写像と結び付けられていないことになります。
[[#comment]]
*** IDREF
[15] [[XHTML m12n]] では属性値の型が URI 参照から [CODE(XML)[[[IDREF]]]]
改められました。
(ただし、 >>5 によれば修正することを検討中のようです。)
[1] ''XHTML1.1のusemap属性の仕様変更''
[2] [[URI]] と [[IDREF]] ですから、
とりあえず区別は出来ますけど、非互換変更は嬉しくないですねぇ。
同じ[[名前空間]]で非互換変更はねぇ。
[7] >>2 やっぱり区別できないや。相対 URI で [CODE(URI)[foo]] みたいな場合。
もっとも[DEL[ほとんどの場合は]>>16][INS[必ず]>>16][[素片識別子]]付きの
URI 参照になるでしょうから、
現実的には問題ないのですが。
[16] [Q[ほとんどの場合は]]と書いていましたが、[Q[必ず]]です。
といいますのは、 [CODE(HTMLa)[usemap]] の参照先は
[CODE(HTMLe)[map]] と定義されているからです。仮に [CODE(HTMLe)[map]]
を[[文書要素]]としたところで、それは文書全体ではなく文書要素に過ぎないので、
それを参照するためにはやはり素片識別子が必要です。
ですから、[Q[[CODE(HTMLe)[map]] を参照]]という制約の範囲内で素片識別子なしの
URI で済ませられる可能性はありません。
ただし、独自拡張で例えば CERN 方式の鯖側画像写像定義ファイルを参照できるとか、
そういうのがある場合はこの限りではありません (が実際にはないと思います)。
[9]
>>2 しまった! [CODE(char)[:]] が [CODE(XML)[[[ID]]]]
に含まれていたら区別できない! と思いきや、 [[XHTML m12n]] を
[[XML名前空間]]無しで使うのは不可能ですから、無問題なのでした。
[4] XHTML 1.1 の 1.0 との差異リストにも載ってないし、気づいてない人も多そう。
[22]
[CITE[HTML Working Group Voyager Issue Tracking System - Modularization-abstractions/8502]]
([[名無しさん]])
[24]
>>22 によれば、一度は[[URI]]に修正することに決めたものの、
ずっと放置した挙句、やっぱり[CODE(XML)@en[[[IDREF]]]]にしておいて、
[[XHTML 2.0]]ではまた[[URI]]に戻すそうですwwwwwwwww
([[名無しさん]] [sage])
[25]
[CITE[[XHTMLMod] usemap="" attribute should be URI, not IDREF from Anne van Kesteren on 2006-08-04 (www-html-editor@w3.org from July to September 2006)]]
早く直せよねぇwww
([[名無しさん]] [WEAK[2006-08-06 05:16:43 +00:00]])
[26]
[[XHTML m12n]] の [[DTD]] 内には次のような説明があります。
[PRE(XML code comment)[
]PRE]
;;
実装されていないからといって、構文を変えてしまったら、
実装が零になってしまうわけですが・・・。
([[名無しさん]])
[27]
>>25 [CITE[Re: [XHTMLMod] usemap="" attribute should be URI, not IDREF (PR#9641) from Anne van Kesteren on 2006-10-17 (www-html-editor@w3.org from October to December 2006)]]
([[名無しさん]] [WEAK[2006-10-17 23:26:11 +00:00]])
[31]
[CITE@en[Hixie's Natural Log: Fixing the "usemap" attribute]] ([CODE[2007-03-06 22:48:06 +09:00]] 版)
[[W3C]] [[HTML WG]] は2000年 ([[勧告]]前) の時点で既に問題を承知していながら大した問題ではないと無視したり、
問題を指摘されて修正すると回答しながら放置したりを繰り返している。
([[名無しさん]])
[32]
>>31 [[www-html-editor]] はずっと無視されてたのかと思ったら、個人宛 & [[w3c-html-wg]] に返信していたのか・・・。
([[名無しさん]])
[39]
これは [[HTML 4]] の
[Q@en[The value of usemap must match the value of the name attribute of the associated MAP element.]]
という説明から [CODE(HTMLa)@en[[[usemap]]]] は [CODE(XML)@en[[[IDREF]]]] にできると [[XHTML m12n]]
の中の人が誤解してしまったのでしょうかね? (その真上に [Q@en[[[uri]]]] と書いてあるのに。)
あるいは、 [[HTML 4]] のこの部分の中の人も [[XHTML m12n]]
の中の人も同じように勘違いしていたのでしょうかね?
([[名無しさん]])
[[#comment]]
** UA による利用
[[#comment]]
*** object の場合
[17] [CODE(HTMLa)[usemap]] 属性が [CODE(HTMLe)[[[object]]]]
要素に指定されている場合は、その [CODE(HTMLe)[object]]
は画像とみなされます。
UA は、その [CODE(HTMLe)[object]] との利用者[RUBYB[対話] [interaction]]を単なるクライアント側画像写像だけで実装して構いません。
音声ブラウザやロボットは [CODE(HTMLe)[object]] を処理せずに対話できます。
UA は物体を取出したり (処理したり) さえしなくても構いません。
著者はすべての UA が物体を取出したり処理したりすることを期待するべきではありません。
[SRC[HTML 4]]
[18] ということは、 [CODE(HTMLe)[object]] 自体もその内容もレンダリングせずに、
代わりに結び付けられた画像写像の [CODE(HTMLe)[map]]
だけをレンダリングしておいてもよいということでしょうか。
[[#comment]]
** 実装
[14] [CODE(HTMLa)[usemap]] 属性と異なる文書にある [CODE(HTMLe)[map]]
要素を使うのに対応している [[WWWブラウザ]]は多くありません。
[CODE(XML)[[[IDREF]]]] による指定にも対応しているブラウザも少数あります。
(>>5 をみてください。)
- [6] ''HTML image map test''
- [5] ''XHTML image map test - results''
[8] 素片識別子に [CODE(URI)[#]]
をつけない間違いはクライアント側画像マップができたころからあったみたいです。
てことは当時の実装はそういうエラー処理をしていたんですか。
一方で当時の実装はちゃんと URI
として外部参照にも対応していたものがあったという話もあります。
[28]
[CITE[Bug 109445 – Referencing a client-side image map declared with id attribute doesn't work]] ([CODE[2007-02-10 14:21:53 +09:00]] 版)
([[名無しさん]])
[29]
[[WinIE]] 6 も [[Firefox]] 1.5 も、
[[百分率符号化]]は理解しません。 [CODE(URI)[[[%]]]]
は [CODE(char)[[[%]]]] という[[文字]]として解釈します。
(as specced in [[Web Applications 1.0]].)
([[名無しさん]])
[30]
[[Firefox]] 1.5 は、 [CODE(HTMLa)@en[[[id]]]] との[[一致]]には[[大文字]]と[[小文字]]を区別''します''が、
[CODE(HTMLa)@en[[[name]]]] との[[一致]]には区別''しません''。
[[WinIE]] 6 はどちらの[[属性]]とも区別''しません''。
([[名無しさん]])
[[#comment]]
** 他との関係
[13] 画像写像は [CODE(HTMLe)[[[map]]]] 要素で定義します。
[[#comment]]
** 例
[19] 簡単な画像写像の例 [SRC[HTML 4、改]]
[PRE(HTML)[
]PRE]
[34]
[CITE[Mares Avanti Quattro Fins - Mares Adjustable Scuba Fins]] ([CODE[2007-08-09 08:11:10 +09:00]] 版)
>
[PRE(HTML example code)[
]PRE]
([[名無しさん]])
[[#comment]]
** メモ
[21] この属性は [CODE(HTMLe)[input]] 要素でも使えます。
説明がまったく無いのでなんともいえないのですが、おそらくは
[CODE(HTMLa)[[[type]]]] が [CODE(HTML)[[[image]]]] の時だけ使えるものだと思われます。
しかし、 [CODE(HTML)[image]] は提出ボタンであり、
それそのものが[[鯖側画像写像]]として機能します。
[CODE(HTMLa)[usemap]] 属性が指定されていると何が起こるのか規定がないのは困ったことです。
[23]
HTML 4 DTD の[[注釈]] (参考) には
[Q[USEMAP points to a MAP element which may be in this document or an external document, although the latter is not widely supported]]
([CODE(HTMLa)[usemap]] はこの文書または外部文書の [CODE(HTMLe)[map]] 要素を指します。ただし後者はあまり広く実装されていません。) と書かれています。
([[名無しさん]] [sage])
[33]
[CITE[HTML5 IRC logs: freenode / #whatwg / 20070808]] ([CODE[2007-08-08 20:51:29 +09:00]] 版)
> [07:19] in other news, only seems to work in opera and firefox, not in safari and IE
> [07:25] according to some old data I have, 17% of usemap="" attributes on elements have the value "#Map"
> [07:27] roughly 0.008% of elements have usemap="" attributes
> [07:28] (it's less common than , , , , , etc)
([[名無しさん]])
[35]
[CITE[HTML5 IRC logs: freenode / #whatwg / 20070809]] ([CODE[2007-08-10 09:50:30 +09:00]] 版)
([[名無しさん]])
[36]
[CITE[ - Anne’s Weblog]] ([CODE[2007-08-10 18:30:58 +09:00]] 版)
([[名無しさん]])
[37]
[CITE[Re: (was: Re: ''''''[''''''html5'''''']'''''' HTMLMapElement.images)]] ([[Ian Hickson ]] 著, [CODE[2007-08-10 03:00:40 +09:00]] 版)
([[名無しさん]])
[38]
[CITE@ja-JP[クライアントサイド イメージマップ - Weblog]] ([CODE[2007-08-14 21:00:00 +09:00]] 版)
([[名無しさん]])
[40]
[[HTML 5]] における
[CODE(HTMLe)@en[[[input]]]] [[要素]]の [CODE(HTMLa)@en[[[usemap]]]] [[属性]]に関する定義は、
r985 で追加され、 r997 で削除されました。
;; [CITE@en[(X)HTML5 Tracking]] ([TIME[2008-10-06 21:38:03 +09:00]] 版)
;; [CITE@en[(X)HTML5 Tracking]] ([TIME[2008-10-06 21:39:21 +09:00]] 版)
([[名無しさん]])
[[#comment]]
* メモ