12

非常に古いブラウザーで HTML ページの JavaScript ブロックを無視するための古いイディオムは、<script>要素のコンテンツを HTML コメントでラップすることです。

<script>
    <!--
        alert("Your browser supports JavaScript");
    //-->
</script>

その理由は、JavaScript を使用しない古いブラウザーは<script>要素のコンテンツをテキストとしてレンダリングするため、JavaScript を HTML コメントに入れると、ブラウザーは何もレンダリングする必要がなくなるからです。

一方、最新のブラウザーは<script>要素を認識し、その内容を JavaScript として解析します。したがって、コメントは有効な JavaScript である必要があります。HTML の終了コメント ( -->) は、JavaScript の行コメント ( ) が前にあるため、JavaScript パーサーによって無視されます//

私の質問は、開始HTML コメント ( <!--) によって JavaScript パーサーが失敗しないのはなぜですか? 冒頭の HTML コメントは有効な JavaScript だと、いろいろな方から聞いています。開始コメントが JavaScript として評価されるというのが本当なら、それが実行されるとどうなりますか?

4

2 に答える 2

7

それは何かエキサイティングな、特別な意味を持つかもしれない式のように見えました ( <,は Javascript!--すべての演算子です) が、オペランドがなければ意味がありません。

これは Javascript<!--と同じで、1 行をコメントアウトするために使用されます。//

ただし、十分に文書化されていないように見える言語機能であり、この「ハック」をサポートするという単純な理由で追加された可能性があります。そして今、後方互換性を壊さないように、それを受け入れなければなりません。

言うまでもなく、これは面白いことですが、この種のコメントは、他の人がたまたま読んで作業する可能性のある実際のコードでは使用しないでください。

<script>現在、すべてのブラウザーがタグを理解し、その内容を表示しないため (Javascript がオフになっていても) 、「ハック」も廃止されました。個人的には、ほとんどの場合、Javascript を HTML に直接書き込むことは避け、常に Javascript を外部リソースとしてロードして、HTML と Javascript を分離するようにしています。

于 2012-10-27T09:20:49.583 に答える