私は簡単なページを持っています:
<!DOCTYPE html>
<html>
<head>
<script>
func = function(message) {
alert(message);
}
</script>
</head>
<body>
<h1> Visible content </h1>
</body>
</html>
別のファイルにあるスクリプト-たとえば-- test.js
:
func("It should block the page.");
次のように入力して、このスクリプトを頭に追加するだけです。
<script src="test.js"></script>
コンテンツが表示される前にアラートが表示されますが、これは問題ありません。
ただし、スクリプトを動的に追加すると:
<script>
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'test.js');
document.getElementsByTagName('head')[0].appendChild(script);
</script>
コンテンツの後にアラートが表示されます。
なぜそれが起こるのですか?ブラウザは、スクリプトが完了するまで待つべきではありませんか (新しいスクリプトの追加と読み込みを含む)。動的に追加されたスクリプトで本文コンテンツをブロックすることは可能ですか?