2010.02.05. 金 11:21
本日、 FireFox で アーカイブ表示した時に、意図しないサムネイル画像が表示されているのを発見。
FireFoxでソースを見ると、コメントタグに > が勝手に書き加えられている。
なぜだろう?
archive.php でFotoFolio デフォルトのソースをコメントタグで囲み、マスクしていたのだが、完全にマスクされていないことが原因だった。
最初にソースをcheckしてみたが、間違いはないと思った・・・。他のどのブラウザでもちゃんとマスクは効いているし。
対処法がわからないので、マスク部分をそっくり削除した。
この問題はケッコウ重要なことだと思う。1行ずつコメントタグで囲んでみるとかしてみたほうがよかったのかな・・・。
もしかすると、javaスクリプトの write みたいなことをどこかでやっていて、その中にコメントタグを閉じる文が書かれているのかもしれないとも思ったが、他のブラウザで正常にマスクされているのだから、これは違うよね・・・。
うむむ・・・不可解。
ということで、同じ問題で困っているユーザがいるに違いないと、検索してみると、どうやら、Firefox は正しく HTML を解釈しているようである。
以下、HTMLの仕様書から抜粋
3.2.4 コメント HTMLコメントのシンタクスを次に示す。 <!-- これはコメントである --> <!-- これもまたコメントであり、 1つの行を超える範囲を占めている --> マーク付け宣言開始区切り子「<!」とコメント開始区切り子「--」の間に空白文字があってはならないが、コメント終了区切り子「--」とマーク付け宣言終了区切り子「>」の間には空白文字があってもよい。 よくある間違いに、コメント中に連続したハイフン「---」を入れることがある。著者は、コメント中に2つ以上連続するハイフンを含めないようにしなければならない。 コメント中に出現する情報は、特別な意味を持ち得ない。例えば文字参照は文字参照として解釈されることはない。 コメントもマーク付けであるという点に注意されたい。 |
なあるほど! <! と -- は別々なのね! 知らなかった。
今回の問題の原因は、元のソースのマスクしたい部分に <!-- 説明 --> という文字列があり、これを
<!-- 説明 --> <!--
と、自分で勝手に閉じるタグを省略して書いていたためであった。
正しくは
--> <!-- 説明 --> <!--
というように正しく書かなければいけない。
FireFoxの場合、閉じられていない最初の<!--のすぐ後に>を書き足してHTMLが不完全になるのを防ぐようである。
結論:
やっぱ FireFox は頼りになるなぁあああああ!! っつーこと。
Google Chrome も誤解釈しているとはちょとガッカリだ。
追記:2010.02.08
表示するたびに余計なソースを吐き出していることになるので、FotoFolio のデフォルト部分は削除した。
kokupsy_un | K.G.C.Works
Follow @kinzox2