印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
misc HTML のコメントと JavaScript

JavaScript が HTML に埋め込んである場合、プログラム部分が「<!--」と「//-->」で囲まれているものをよく見かける。これは HTML のコメントと JavaScript のコメントがうまい具合に組み合わされて出来ている。JavaScript の書式について考える。

■ ■ ■

きっかけとなった疑問は、「JavaScript を含む Script タグは1行で書けるか?」、すなわち

<script type="text/javascript"><!-- スクリプト --></script>

あるいは

<script type="text/javascript"><!-- スクリプト //--></script>

と書くことが可能なのかというものである。答は「書ける。しかし書いても意味がない」である。

以下では、HTML と JavaScript の書式について考えていく。

JavaScript だけを考える場合、

<script type="text/javascript">スクリプト</script>

とか

<script type="text/javascript">
スクリプト
</script>

などと書く。しかし、JavaScript を扱うことができないブラウザでは、スクリプトのソースが表示されてしまうことがあるため、スクリプト部分を HTML のコメントで囲むのが親切な設計とされる。

<script type="text/javascript">
<!--
スクリプト
-->
</script>

しかし、JavaScript では「<!--」で始まる行は無視されるが、それ以降の「--」は解釈をしようとしてしまう。「--」は JavaScript でのデクリメント演算子だからである。そして、「>」は比較演算子であるため、これらを並べたもの「-->」は JavaScript の構文エラーとなってしまう。そこで、「//」を「-->」より前に置くことで「-->」を解釈させないようにするという方法がとられる。 「//」は JavaScript のコメントを意味し、「//」以降は行末までコメントと解釈される。これを考えに入れると、次のよく例題に示される形が得られる。

<script type="text/javascript">
<!--
スクリプト
//-->
</script>

次に、これを JavaScript と Web ブラウザの両方の視点から眺めてみる。JavaScript からは、「<!--」で始まる行は無視、「//」が行頭にあればその行はコメントで無視することになるので、

<script type="text/javascript">
スクリプト
</script>

と同じに見える。一方 Web ブラウザからは、

<script type="text/javascript">
コメント
</script>

と見える。<script> タグを解釈しないブラウザからは、

<不明なタグ>
コメント
</不明なタグ>

と見えるのでうまい具合になっている。不明なタグは解釈されず、表示もされないからである。

さて、次に

<script type="text/javascript">
<!--
スクリプト
//-->
</script>

の行数を減らせるかを考えてみる。「<!--」の行は無視されてしまうので、ここにスクリプトは書いても動作しない。したがって、最初の「JavaScript を含む Script タグは1行で書けるか?」には「ノー」という答になる。最小は次の2行で、

<script type="text/javascript"><!--
スクリプト//--></script>

このような形ならうまく行きそうである。

しかし、これは見た目の悪さが、簡潔さを大きく上回ってしまっている。せっかく考えては見たものの、結構な無駄であった。とほほ。

参考:

Posted by n at 2004-04-28 23:17 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?