* img 要素、input 要素 ismap 属性 (HTML, XHTML 1) [4] [[HTML]] の [CODE(HTMLe)[[[img]]]] 要素および [CODE(HTMLe)[[[input]]]] 要素の [DFN[[CODE(HTMLa)[ismap]] 属性]]は、 [[画像]]が[[鯖側画像写像]]であることを示します。 [CODE(HTMLe)[input]] の場合は、 [CODE(HTMLa)[[[type]]]] 属性が [CODE(HTML)[[[image]]]] の時に使います。 [5] 仕様書: - [[HTML 4]] -- [CITE[13.6.2 Server-side image maps]] -- [CITE[HTML 4 Changes]] ** 属性値 [8] この属性は[[真偽値属性]]です。 指定すれば[[真]] (鯖側画像写像)、指定しなければ[[偽]] (非鯖側画像写像) になります。 [[#comment]] ** 提出 [9] 利用者が画像を[[かちっ]]ることで[[リンク]]を活性化した場合、 画面上の座標を鯖に直接送ります。座標は画像に対する画素値で、 画素とその計測法の定義は [[CSS 1]] によります。 [SRC[HTML 4]] [11] かちった座標は、次の方法で鯖に送られます。 [SRC[HTML 4]] = 元になる URI を用意 ([CODE(HTMLe)[[[a]]]] [CODE(HTMLa)[[[href]]]] から)。 = [CODE(URI)[?]] を付け足す = [VAR[x]] 座標、[CODE(URI)[,]]、[VAR[y]] 座標を付け足す = できた新しい URI によりリンクをたどる (この定義の仕方だと、 [CODE(HTMLa)[href]] にもとから [CODE(ABNF)[[[query]]]] がついていたら困ります。つけてはいけないのでしょうか。 それとも UA はとらないといけないのでしょうか。) [18] [CODE(HTMLe)[input]] の場合のことがちゃんと書かれていません。 フォームの章には書いてあるのでしょうが。。。 と思ったら書いてありません。 [CODE(HTMLa)[type]] が [CODE(HTML)[[[image]]]] なのは画像提出ボタンで、元々フォームを提出するための鯖側画像写像としての機能を持っています。 [CODE(HTMLa)[ismap]] 属性を指定すると何が起こるのかは不明です。 [20] ところで、座標は 0 から始まるのでしょうか、 1 からでしょうか。 [[#comment]] *** リンク先 URI について [23] リンク先の URI について、 HTML 4 は >>11 のようにしか述べていませんが、 1996年に発表された W3C [[NOTE]] >>22 は、 [CODE(ABNF)[query]] の使用を禁じていました。 そして、 UA には誤り処理として [CODE(ABNF)[query]] を削った URI に座標を付け加えることと、 (情報の劣化が起こるので) 利用者に報告することを求めていました。 なお、[[素片識別子]]の使用は認めており、 (当然) 座標は [CODE(ABNF)[[[path]]]] と素片識別子の間に挿入されることが述べられています。 [24] しかし、 HTML 4 も >>22 の NOTE も、 [CODE(URI)[[[http]]:]] 以外の [[URI scheme]] には触れていません。 [25] 但し、 >>22 の NOTE は当時のほとんどの UA が素片識別子付きに対応していないと注意しています。 ([[名無しさん]]) [[#comment]] *** 座標を選択しない場合 [12] 利用者が座標を選択する手段を有しない UA では、座標 [SAMP(URI)[0,0]] を送るべきです。 [SRC[HTML 4]] [21] HTML 4 より少し前、 1996年に発表された W3C [[NOTE]] >>22 は、画像を表示しない・できない UA は [SAMP(URI)[http://some.domain.example/path/resource]] のように [CODE(ABNF)[query]] のまったくない URI を使うべきであるとし、 [[Lynx]] など既存の UA は座標 [CODE(math)[(0, 0)]] を送るので、鯖側はそれにも対応することをすすめていました。 [22] [CITE[Imagemapped Images and Image-Incapable User Agents]], , 発表当時の URI は 。 [Q[Status of this document]] によれば現在の W3C [[WD]] のような位置付けだったらしいのですが、 2004年現在、 によれば [[Working Group Note]] に分類されています。同時期の他の HTML 系 WD とは異なり、 直接 HTML 4 仕様書に取込まれてはいないようです。 [[#comment]] ** input 要素の ismap 属性 [19] [[HTML 4.0]] には [CODE(HTMLe)[input]] 要素に [CODE(HTMLa)[ismap]] 属性がありませんでしたが、なぜか [[HTML 4.01]] で追加されました。 HTML 4 13.6.2 の説明は、 HTML 4.0 [[FE]] の時には、 [CODE(HTMLe)[img]] でも [CODE(HTMLe)[input]] でも鯖側画像写像を使う時には [CODE(HTMLa)[ismap]] が要るようなことが書かれていましたが、 [[SE]] で [CODE(HTMLe)[img]] の時だけ要ると修正されました。 HTML 4.01 で追加したのはこの間違った文章との後方互換性のため(藁) かもしれませんが、全然説明がありません。不親切だなあ。 ** 歴史 *** 大域属性としての使用 [32] [[XHTML2]] では [CODE(HTMLa)@en[[[src]]]] の[[大域属性]]化に伴い [CODE(HTMLa)@en[[[ismap]]]] [[属性]]も[[大域属性]]となりました。 ;; [CITE@en[- XHTML Attribute Collections]] ([TIME[2002-12-12 23:58:38 +09:00]] 版) ** 他との関係 [7] [CODE(HTMLa)[ismap]] 属性が定義されている要素型は [CODE(HTMLe)[img]] と [CODE(HTMLe)[input]] だけです。 鯖側画像写像はあまりすすめられないという事情からか、 [CODE(HTMLe)[[[object]]]] 要素には定義されていません ([CODE(HTMLa)[[[usemap]]]] はあるのに)。 なお、 [CODE(HTMLe)[input]] で [CODE(HTMLa)[ismap]] にできるのは [CODE(HTMLa)[[[type]]]] が [CODE(HTML)[[[image]]]] のときのみです。 [13] [CODE(HTMLe)[img]] の先祖に [CODE(HTMLe)[a]] がない場合どうなるのかは HTML 4 仕様書に書かれていません。 [14] HTML 4 仕様書は触れていませんが、 クライアント側画像写像ができてすぐの頃には [CODE(HTMLa)[usemap]] と [CODE(HTMLa)[ismap]] の両方を指定することがありました。 (が、面倒だし、多くの WWW ブラウザはクライアント側に対応したので習慣にはなりませんでした。) [16] >>14 と書いたけど検索してみると両方併用した説明が一杯出てきます。意外とあったのかも。 [[#comment]] ** 不思議解釈 [17] [CODE(HTMLe)[ismap]] を[Q[とにかく画像写像のときはつけるべし]] の意味だと勘違いしている人も沢山いる悪寒。 参考: ''TAG index/過去ログ/ クリッカブルマップ'' [[#comment]] ** 例 [10] [PRE(HTML)[

target ]PRE] [WEAK[(HTML 4 仕様書より、改)]] この例で、利用者が座標 [CODE(math)[([VAR[x]], [VAR[y]]) = (10, 27)]] をかちったとすると、終点 URI は [SAMP(URI)[http://www.acme.example/cgi-bin/competition?10,27]] になります。 [[#comment]] ** メモ [6] 鯖側画像写像は、[[クライアント側画像写像]]よりも先に開発・実装されましたが、 access 性に関する問題点がある上、 鯖側での設定が必要である面倒臭さからほとんど用いられなくなっています。 1999年の HTML 4 勧告もクライアント側画像写像をすすめています。 ただし、 [CODE(HTMLa)[ismap]] は'''非推奨'''とまではされていません。 [Q[鯖側画像写像は画像写像がクライアント側画像写像にするには複雑すぎる場合には使えるかも]]と言っています。 [1] こんなの見かけました: [SAMP(HTML)[<[CODE(HTMLe)[a]] [CODE(HTMLa)[href]]="[[javascript]]:foo();"><[CODE(HTMLe)[img]] [CODE(HTMLa)[ismap]]/>]]。 う〜ん。。。 [2] そこいらの [[WWWブラウザ]]では >>1 はもちろん動かないわけだ。 (ていうかそもそも [CODE(ABNF)[[[query]]]] が存在する [[URI]] [[scheme]] じゃないと話にならんよね。) [3] でも [CODE(ABNF)[query]] があるからといって [CODE(URI)[[[mailto]]:]] なんかで使えたりしたらたまらんわな。 [15] [CODE(HTMLe)[a]] のリンク先を静的な (鯖側で画像写像やスクリプト等でない) HTML 文書にして、 [[JavaScript]] で [CODE(ABNF)[query]] をみて何かするという技法がありました。 (あまり流行らなかったようですが、 さして使い道がないからでしょう。) 例: ''JavaScript Guide'' (2000年8月最終修正) ([[名無しさん]]) [26] [CITE[日々是開発: SQS Development(2006-01-09)]] [[鯖側画像写像]]にも、まだ、純粋に画像の1点を選択させるだけの使い道はあるのか。。。 ([[名無しさん]] [WEAK[2006-01-10 01:39:48 +00:00]]) [27] [CITE[EMail Msg <9305180650.AA03223@wintermute.ncsa.uiuc.edu>]] ([CODE[2007-07-01 04:22:17 +09:00]] 版) ([[名無しさん]]) [28] [CITE[SpaceWalk Hypermedia Demo]] ([CODE[1997-03-12 07:31:47 +09:00]] 版) ([[名無しさん]]) [29] [CITE[EMail Msg <9308102156.AA06138@austin.BSDI.COM>]] ([CODE[2007-07-01 04:30:40 +09:00]] 版) ([[名無しさん]]) [30] [CITE[EMail Msg <9305272008.AA26764@austin.BSDI.COM>]] ([CODE[2007-07-01 04:35:30 +09:00]] 版) ([[名無しさん]]) [31] [CITE[EMail Msg <9306050318.AA10442@wintermute.ncsa.uiuc.edu>]] ([CODE[2007-07-01 05:00:05 +09:00]] 版) [33] [CITE[WWW-Talk Apr-Jun 1993: Re: Keeping HTML Simple & Format negotiation between Browser & Server]] ( ([TIME[2013-03-05 13:24:03 +09:00]] 版))