4

最近、いくつかの Web コードを継承したところ、すべての Java Script スクリプトが HTML コメント タグ内に含まれていることがわかりました。

例えば:

<script type="text/javascript" language="javascript"><!--
    function ValidateForm() { ... }//-->

私が理解しているように、この方法により、サポートされていない古いブラウザーが Java Script を解釈できなくなりました。しかし、これは私が教えられたことではなく、今では不要と見なされているのでしょうか、それともまだ一般的な慣習なのでしょうか? もしそうなら、なぜですか?


更新: それらを残すようにアドバイスしてくれた kennebec に感謝します。これは今のところ行っています。また、Emmett にも感謝します。将来、私が書くコードから必ずそれらを除外します!

4

4 に答える 4

11

http://javascript.crockford.com/script.html :

<!-- //-->スクリプトでハックを使用しないでください。これは、第 1 世代のブラウザーである Netscape 1 と Mosaic でスクリプトがテキストとして表示されないようにすることを目的としていました。それは何年もの間必要ではありませんでした。<!-- //-->HTMLコメントを通知することになっています。コメントはコンパイルして実行するのではなく、無視する必要があります。また、HTML コメントは -- を含めるべきではないため、デクリメントするスクリプトには HTML エラーがあります。

于 2011-01-10T16:30:30.490 に答える
2

これは、XHTML バリデータが原因です。js コードの周りの HTML コメントはタグの外側で使用する必要があります。バリデーターは、js ではなく、html を参照することになっています。

このトピックに関するすべてのテキストhttps://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documentsを強くお勧めします 。

于 2011-01-10T16:34:28.520 に答える
0

を削除すると、プログラムテキストの一部としてが含まれ<!--ている場合にスクリプトが失敗する可能性があります。</script<!-- ... -->

例えば、

<script><!--
function containsScriptEndTag(s) {
  return s.indexOf('</script>') >= 0;
}
//-->
</script>

なしで異なる解析を行い<!-- ... -->ます。

したがって、先に進んでそれらを削除しますが、最初に確認してください。

ところで、要素の内部scriptでは、それらは「コメント」とは呼ばれず、「テキストスパンのエスケープ」と呼ばれます。http://www.w3.org/TR/2009/WD-html5-20090423/syntax.html#syntax-escapeから

エスケープテキストスパンは、それ自体がエスケープテキストスパンに含まれていないエスケープテキストスパンの開始で始まり、次のエスケープテキストスパンの終わりで終了するテキストのスパンです。エスケープするテキストスパン内に文字参照を含めることはできません。文字参照のように見える文字のシーケンスには、特別な意味はありません。

エスケープするテキストスパンの開始は、4文字のシーケンスで構成されるテキストの一部です。

エスケープするテキストスパンの終わりは、3文字のシーケンス「->」(U + 002D HYPHEN-MINUS、U + 002D HYPHEN-MINUS、U + 003E GREATER-THAN SIGN)で構成されるテキストの一部であり、そのU + 003E GREATER -記号より(>)。

エスケープするテキストスパンの開始は、そのU +002DHYPHEN-MINUS文字を対応するエスケープするテキストスパンの終了と共有する場合があります。

于 2011-01-10T16:42:38.797 に答える
0

私の Web サイトは、XML である XHTML 1.1 です。

コードに XML エンティティ ('&'、'<'、'>' など) がある場合、私の JavaScript は//<![CDATA[ andでラップされ ます。//]]>

于 2011-01-10T16:36:13.300 に答える