次のhtmlドキュメントについて考えてみます。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
alert("Hello")
</script>
</head>
</html>
Firefox、Safari、Chromeで開いた結果は、私のMacBookでも同じです。アラートメッセージに「こんにちは」と表示されます。私はこの答えを読んで、ブロワーの振る舞いを理解しようとしていました。主な部分は次のとおりです。
タグのコンテンツはCDATAとして扱われるため、コンテンツは解析されず、引用符で囲まれていないXMLまたはHTMLをコンテンツに格納できます(コンテンツにタグを挿入しない限り
</script>
、要素が閉じられます)。
Firefoxでソースを見るとどうなるか試してみましょう。
表示されるブラウザの出力は")
、スクリプトタグがアラート内で閉じられたと見なされるためです。私たちが本当に本当に表示したい場合にこれを克服する1つの方法"</script>"
は、次のことを行うことです。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
alert("<"+"/script>")
</script>
</head>
</html>
これでFirefoxはそれを理解します:
質問:
パーサーが最後の部分であるかどうかを確認するのは本当に簡単です</script>
。これを確認するにはさらに時間がかかりますが、実行可能です(.に遭遇する前に引用符の数を数えます</script>
。それでも終了タグである場合は、終了タグを探し続けます)。"</script>"
問題は、これはjavascript内に記述できないルールですか?もしそうなら、私が気付いていないかもしれない他の微妙なルールは何ですか?
同じことが、たとえばphpパーサーにも当てはまります。<?php echo "?>" ?>
。私はこれをテストしましたが、phpは実際の場所を知っているよう?>
です。