MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

anchor部のURIエンコード文字列の処理についての質問
https://forums.mozillazine.jp/viewtopic.php?f=2&t=12390
ページ 11

作成者:  M.J.D. [ 2011年12月19日(月) 02:57 ]
記事の件名:  anchor部のURIエンコード文字列の処理についての質問

下記のようなanchorに対してのリンクを作成した場合の動作についての質問です.
コード:
<a id="local%20system" />

同じページ中で,下記のようなリンクを作成すると,
コード:
<a href="#local%20system">

Firefox8.0.1でのリンク先が下記のようになり,勝手にURIエンコード文字列がデコードされリンク先に飛べなくなってしまいます.
コード:
(省略)#local(半角スペース)system

anchor部にわざわざ「%20」を使用する必要があるかは兎も角として,このような動作はHTMLの解釈として正しいんでしょうか.

なお,Firefox以外については,Chrome,IE,w3mで動作を確認していますが,勝手にURIエンコード文字列をデコードすることはありませんでしたので,Firefox特有の問題のようです.

作成者:  Sakuraya [ 2011年12月19日(月) 20:00 ]
記事の件名:  Re: anchor部のURIエンコード文字列の処理についての質問

Mozilla/5.0 (X11; Linux i686; rv:11.0a1) Gecko/20111218 Firefox/11.0a1で再現しました。
<a href="#local%20system">SomeAnchor</a>としたときは<a id="local system"/>としなければいけませんね。
ですが、HTML 4.01 Specification6.2 SGML basic typesを読むとそもそもid属性に半角スペースと%は使えません。
使用可能な文字でidを付けていない場合はUAによって解釈が変わってもしかたがないと思います。

作成者:  M.J.D. [ 2011年12月20日(火) 00:47 ]
記事の件名:  Re: anchor部のURIエンコード文字列の処理についての質問

> Sakurayaさん
早速の回答,どうもありがとうございます.
idについては,確かにその通りでしたので,これについては記載ミスでした.
という訳で,こちらはHTMLのソースを修正ですね(アンスコに置き換えかな).

以下,蛇足です.
機能としては同等のa要素のname属性(廃止予定)の場合は,定義上はCDATA,ということで,name属性に変えてみましたが,なんと,この時はちゃんとリンクされました.
というわけで勝手にデコードしても文法的に正しいHTMLには問題ないようです.
(とは言え,勝手にデコードされるというのも,あまり気持の良い話ではないですが).

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/