スクリプトタグ内のHTMLコメントはベストプラクティスですか?[閉まっている]


97

次の方法は、私が操作する必要があるインラインJavaScriptではかなり一般的です。

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

ポイントは、JavaScriptと互換性のないブラウザーがソースをレンダリングしないようにすることですが、これは現在でもベストプラクティスですか?現在使用されているブラウザーの大部分はJavaScriptを解釈できます。現代のモバイルデバイスでさえ、通常問題はありません。

「どうして?」質問:私は最近、数時間かけて、誰かが「->」の前の「//」を、一部のページの奥深くに埋め込まれたスクリプトタグの末尾に残した問題をデバッグする必要があり、これが謎のJavaScriptの原因でしたエラー。

職業はなんですか?これはまだ「ベストプラクティス」と見なされていますか?


回答:


118

重要なことは、現在、特定のブラウザーがJavaScriptをサポートしているかどうかは無関係である(明らかに大多数がサポートしている)ことです。ほとんどすべての人がスクリプトブロックを理解しているため、無関係です。それを解釈します。

Matt Kruseが、JavaScriptツールボックスサイトで、スクリプトブロック内で特にHTMLコメントを使用しない理由について、もう少し詳しく説明しています

そのページから引用:


スクリプトブロックでHTMLコメントを使用しない

昔のjavascript(1995)では、Netscape 1.0のような一部のブラウザはスクリプトタグのサポートや知識を持っていませんでした。したがって、JavaScriptが最初にリリースされたとき、古いブラウザからコードを非表示にして、ページにテキストとして表示されないようにする技術が必要でした。「ハック」とは、スクリプトブロック内でHTMLコメントを使用してコードを非表示にすることでした。

スクリプトでのHTMLコメントの使用は悪い

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

今日一般的に使用されているブラウザは<script>タグを知らないため、javascriptソースを非表示にする必要はありません。実際、次の理由で有害と見なされる可能性があります。

  • XHTMLドキュメント内では、ソースは実際にはすべてのブラウザーから隠され、役に立たなくなります。
  • -HTMLコメント内では許可されないため、スクリプト内のデクリメント操作は無効です

1
+1。私のcomp.lang.javascriptの日からこのトピックについて多くの情報を持っている人がいることを知っていました。マットが引用して、あなたの答えが出たとき、私はニュースグループのアーカイブを調べていました。
グラントワグナー

1
XHTMLでは、HTMLコメントの代わりにCDATAを使用できます:<script ...> // <![CDATA [... //]]> </ script>
コンクリートガネット

この「ハッキング」によりInternet Explorer 9でエラーが発生することを追加する必要があります(クライアントがページが適切に機能しておらず、これが原因であると不平を言った)
lordscales91

24

私はそれをやめました。ある時点で、NCSAモザイクを手放す必要があります。


7
言い換えれば、OPがなぜそれをやめるべきなのかについての理由はありません。あなたはそうしたので彼はそれをやめるべきだと提案していますが、これはIMOに答える十分な理由にはなりません。
ローレンスアイエロ

1
@LawrenceAiello:「ベストプラクティス」というフレーズについては、「意見」ではなく「事実」を思い起こさせますか?
2015年

5
そこには、この記事全体の究極の欠点があります。それは議論の質問なので、それは閉じられるべきでした。
Lawrence Aiello、2015年

1
おそらくこれが6年前に投稿されたとき、これは回答として適格でしたが、現在のサイトの基準ではそうではありません。
j08691

1
この回答はMeta SO
CubeJockey

10

W3C勧告に従って、スクリプトデータをユーザーエージェントから隠すことが主に役立ちました。

W3cページから引用:

JavaScriptでのスクリプトのコメントJavaScriptエンジン"<!--"では、SCRIPT要素の先頭で文字列を使用でき、行末まで文字を無視します。JavaScriptは、「//」を現在の行の終わりまで続くコメントの開始として解釈します。これは、JavaScriptパーサーから文字列「->」を非表示にするために必要です。

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>

2
HTML 4.xが使用されている場合。これは、XHTMLとはまったく別の話です。
クエンティン

8

いいえ、それはスクリプト要素が最初に導入されたときに使用された回避策からの二日酔いです。今日では、ブラウザーはスクリプト要素を理解できません(たとえ「スクリプトが無効になっているか、サポートされていないために無視する必要があるスクリプト」と理解していても)。

XHTMLでは、それらは積極的に有害です。

その歴史について少し前に書きました。


3

しばらくの間、これの使用を中止しました。また、Douglas Crockfordによると、ほとんどのブラウザーで使用できるスクリプト言語はJavaScriptだけなので、スクリプトタグからtype属性削除できます。


1
ほとんどのブラウザは引き続き機能しますが、HTML仕様に違反しているため、お勧めしません。
クエンティン

4
IEがVBスクリプトをデフォルトのタイプとしていつ使用するかは決してわかりません
フランシス

1

手動で入力している場合は、常に外部jsファイルを使用することをお勧めします。

懸念事項について:現在、ほとんどのブラウザーはJavaScriptセーフです。ただし、HTMLを直接フェッチするための単純なパーサーを作成する場合もあります。そのため、これらのクライアントにとって安全な引用は非常に役立ちます。また、古いLynxのような一部の非JSクライアントは、これからメリットを得ます。


1

スクリプトタグの間にリテラルテキストを含めない場合、つまり、srcファイルからスクリプトをロードすると、コメントを忘れることがあります。



0

私はそれを何年も前にやめました。この時代には本当に必要ありません。


@Yvette回答を投稿してから6年後にコメントを投稿する動機は何ですか。
John Topley、2015年

@Yvette攻撃は行われませんでした。そしてもちろん、あなたは正しい。最近はコメントとして投稿していました。
John Topley、2015年

-1

私はそれをしませんが、先日、w3cでパスワードで保護されたサイトを検証しに行きました。そのため、直接入力方式を使用する必要がありました。それは私のjavascriptについて不平を言ったので、私はすべてにコメントを戻しましたが問題はありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.