0

重複の可能性:
document.write()で書き込むときに<script>タグを分割するのはなぜですか?

enyoのソースを見ると、これが(enyo.jsで)わかります。

document.write('<scri' + 'pt src="' + root + "/source/boot/" + inSrc + '"></scri' + 'pt>');

<scriptタグが壊れているのはなぜ<scri + ptですか?終了タグについても同じことが行われます。これは私が知らないJavascript忍者の秘密ですか?

4

4 に答える 4

4

ブラウザのhtmlパーサーが文字列" </script>"を認識すると、それがjavascript文字列に含まれているかどうかに関係なく、ブラウザはそれを終了スクリプトタグと見なし、現在のスクリプトブロックを終了します。" </script>"タグを2つに分割すると、JavaScript文字列として必要なときにこれが発生するのを防ぐことができます。

この説明を参照してください:

タグはコンテンツに依存しません。つまり、HTMLパーサーは、JavaScript文字列の途中にいることを認識していません。

JavaScriptの処理は、ブラウザがJavaScriptである部分を理解するまで行われません。そのクローズタグが表示されるまで、引用されているかどうかに関係なく、中身は関係ありません。

于 2012-09-06T14:17:07.077 に答える
0

さまざまなフィルターの周りにスクリプトタグを取得するように設計されています。

于 2012-09-06T14:12:21.737 に答える
0

これが必要なのは、パーサーがその部分文字列を<script>ステートメント自体が含まれている終了タグと見なすためです。したがって、途中で分割する必要があります。

于 2012-09-06T14:12:45.670 に答える
0

ブラウザがをブロックしないようにするためdocument.write。通常、この種のことを行うのは安全ではありません。

</script>また、本体のどこかを見るとすぐに実行を停止する古いブラウザの場合。document.writeこれは、 JavaScriptコードとは見なされないことを意味します。

このフィドルを見て、私が何を意味するかを確認してください。タグはアラートのscript直後に閉じます。

于 2012-09-06T14:12:55.850 に答える