Document.write() スクリプト タグの分割: 理論的根拠
Web 開発では、document.write を使用して記述されたスクリプトに遭遇することは珍しくありません。 () <script> を分割します。または /script>タグ。この方法では、「なぜそのような手法を採用するのですか?」という疑問が生じるかもしれません。</script>
分割の理由:
その答えは、HTML パーサーが < 内の CDATA セクションを処理する方法にあります。 ;スクリプト>要素。 SGML では、<script>ブロックは、終了タグのオープン シーケンス (例: </) に遭遇すると終了する必要があります。ブラウザは実際の </script> のみを認識します。 close-tag をスクリプト ブロックの末尾として使用します。
分割の重要性:
次の例を考えてみましょう:
<script type='text/javascript'> document.write('<scr' + 'ipt type="text/javascript" src="script.js"></sc' + 'ript>'); </script>
この場合、<script> の場合タグが分割されていない場合、終了タグ シーケンス </sc は、それを囲んでいる <script> の終わりとして解釈されます。ブロックされ、スクリプトが途中で終了します。タグを分割すると、ブラウザがスクリプト全体を正しく解析して実行できるようになります。</p> <p><strong>XHTML とスクリプトの記述:</strong></p> <p>XHTML では、スクリプト ブロックに対する特別な処理はありません。 < などの文字& はスクリプト内でエスケープする必要があります。ただし、エスケープされていない文字を使用すると、XHTML を HTML として解析するブラウザで混乱が生じる可能性があります。</p><p><strong>代替スクリプト作成:</strong></p><p>XHTML パーサーと HTML パーサーの両方に対応するには、次のアプローチ:</p><pre class="brush:php;toolbar:false"><script type="text/javascript"> document.write('\x3Cscript type="text/javascript" src="script.js"></script>');
16 進数を使用して文字をエスケープする表記法を使用すると、スクリプトがすべてのパーサーによって正しく解釈されるようになります。
以上が`document.write()` を使用して ` タグを分割するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。