topics
一言メモ
selectタグをJavascriptで生成したとき、IE6だけsize属性が1になっちゃう。そりゃないぜ!止む無くsetTimeoutで切り抜けた【一言集】

ホーム > マークアップ > (x)html > <style><script>要素のコメントアウト

<style><script>要素のコメントアウト

<style><script>要素のコメントアウト

htmlからコーディングを覚え、xhtmlへ移行したときの落とし穴

実は<style><script>要素のコメントアウトはhtml文書では問題ないが、xhtml文書ではNGであることをお恥ずかしながら最近知った。
雑誌などでコメントアウトされてないのがミスプリだなんて浅はかに思っていた(反省)。

<style><script>要素のコメントアウトをxhtmlに書くとどうなる?
表面上問題ないように見える。しかしブラウザがhtmlとして処理しているからにすぎず、xmlとして処理した場合、コメント内は無視される(処理されない)。
そもそもなぜ<style><script>要素にコメントアウトするのか?
<style><script>要素を認識しないブラウザが要素内を適用しないばかりでなくそのままブラウザに表示してしまうのを防ぐため
では、<style><script>要素を認識しないブラウザって何なのか?
1997年以前のブラウザ。
<style>要素
Netscape4未満、InternetExplorer4未満
<script>要素
Netscape2未満、InternetExplorer3未満
本来の意味でのコメントアウト
作成者の都合(管理をしやすくしたり、ソースを分かりやすくするなど)で使うもの。もちろん、そういう意図でのコメントアウトの利用はxhtmlでも問題ない。

<style><script>要素内は外部に書くのが基本であり、外部に書くのであればコメントアウトの必要はない。しかしどうしてもxhtmlファイル内に<style><script>要素の中身を記述するのであれば、コメントアウトをつけない(未対応への対応はしない)のが現在の主流であり、(匿名さん、コメントありがとうございます)。自分もこれからはそう対応していこうと思った次第。

参考
「xhtml コメントアウト」で検索。検索結果をいろいろ読み、抜粋・まとめ・経験による推測してこの記事を作成しました。
この記事に関するご意見・ご感想をお待ちしております。

お名前:

コメントNo.1

三年近くも前の記事にコメントするのも如何なものかと思いましたが、その後の追記も更新もないようなので一言。
XHTMLでstyle・script要素の内容をコメントで隠せないのは内容モデルの違いによるものです。
XMLでは要素の直下に出現する文字データは "#PCDATA" となっているために、内容モデルを "CDATA" とすることができません。
HTMLではstyle・script要素の内容モデルは "CDATA" だったため、style・script要素の内容にコメント宣言を記述してもただの文字列となりますが、XHTMLではコメントと解釈されて無視されてしまいます。これがXHTMLではstyle・script要素未対応ブラウザから内容を隠すためにコメントアウトが使えない理由です。「未対応ブラウザへの対応はしない」のではなく出来ないのです。

匿名:2010年3月10日

コメントNo.2

匿名さん、詳細な説明コメントありがとうございますっ!
結果だけを求めて、その過程を把握するのがおろそかになっていたので、初心を思い出した気がします。
ご指摘・ご説明、ありがとうございました。

たけたけ:2010年3月10日

コメントの削除はお手数ですが、contact@allinthemind.bizまでご連絡ください。



ナビゲーション