1

これはばかげた質問かもしれませんが、これを明確にしたいと思います。JavaScript を 2 回閉じるとどうなりますか。

<script type="text/javascript">
alert("hello");
</script>
</script>

私はこれをしましたが、エラーが発生していません.スクリプトを閉じたように、実行が行われないため、エラーはトリガーされません. これはどのような状況でも問題を引き起こしますか?

これを尋ねている理由は</script>、ユーザーがスクリプトを送信するプラグインの最後に を挿入したいからです。これで問題なく動作する場合、検証時に追加のコーディングを行う必要がないように

4

6 に答える 6

2

ブラウザーは、これを追加の予期しない終了タグとして扱います。それが であることは問題ではなく、同じコンテキストで許可されている他のもの</script>であってもかまいません。</link>

厳密な / XML モードを有効にしない限り、ほとんどのブラウザーはそのような余分なタグを黙って無視します。厳格モードの場合、コンソールにエラーが表示されます。

ユーザーが提供するプラグインを適切にラップするには、次の戦略をお勧めします。

  • 常に独自のタグでラップします (構造が常に正しいことを確認できます)。

  • の 2 つのタグの間に挿入した文字列を確認し、<scriptいずれかが見つかった場合はエラーを報告します<script></script>

ここでの考え方は、ユーザーがコード内でスクリプト タグを使用してはならず、適切な場所に配置することです。

于 2013-08-28T10:46:49.057 に答える
1

ほとんどのブラウザーは、余分なタグを削除/無視します。それが問題を引き起こすとは思いませんが、それを行うにはかなり醜い方法です。ただし、現在これ以上の提案はありません。

于 2013-08-28T10:38:50.437 に答える
0

XHTML の規則は、HTML の規則よりもはるかに厳格です。XHTML ファイルのスクリプトで特殊な XML 文字 (& や < など) を使用すると、エラーが発生します。最も簡単な回避策は、外部スクリプト ファイルを使用することです。ただし、単にインライン スクリプトを記述する必要がある場合は、ファイルに CDATA (文字データ) セクションを含める必要があります。CDATA セクション内では、特殊な XML 文字を自由に使用できます。次の例では、XHTML と HTML の両方の構文と互換性のある CDATA セクションを使用しています。

<script type="text/javascript">
//<![CDATA[
  alert((1 < 2) && (3 > 2));
//]]>
</script>

また、これは正しい方法ではありません。スクリプトがインラインであると、W3C への準拠が損なわれます。

于 2013-08-28T10:50:16.453 に答える
0

なし。ブラウザはそれを無視しますが、明らかに標準に合格しません。

私の知る限り、ブラウザが開始タグに遭遇すると、終了タグがスクリプト<script>になるまですべてを想定します。</script>したがって、a で開始し</script>ても効果はありませんが、「予期しない」例外が発生します。

于 2013-08-28T10:40:33.633 に答える
0

ブラウザによって効果が異なる場合がありますが、理論上はすべて 2 番目のタグを無視します。

于 2013-08-28T10:40:45.037 に答える