ホームページ  >  記事  >  ウェブフロントエンド  >  非同期スクリプト読み込みで document.write() の制限をオーバーライドする方法

非同期スクリプト読み込みで document.write() の制限をオーバーライドする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-20 14:04:02478ブラウズ

How to Override document.write() Limitations in Asynchronous Script Loading?

非同期スクリプトの読み込み: document.write() の制限事項について

スクリプトを非同期で実行する場合、最初のページの読み込み後に、次のことが重要です。文書の操作に制限が生じることを認識しています。コンソール メッセージに記載されているように、「明示的に開かれない限り、非同期で読み込まれた外部スクリプトからドキュメントに書き込むことはできません。」

これは、そのような外部スクリプト内で document.write() を使用することを意味します。スクリプト自体は正常に読み込まれても、読み込まれたスクリプトはドキュメントに効果的に書き込みません。その理由は、ドキュメントが解析されて閉じられた後に非同期スクリプトが実行されるという事実にあります。

この問題に対処するには、document.write() を明示的な DOM 操作に置き換える必要があります。ドキュメントに直接書き込む代わりに、必要な DOM 要素を作成し、appendChild()、insertBefore() などのメソッドを使用するか、innerHTML プロパティを設定してドキュメントに追加します。

たとえば、 document を使用する代わりにインライン スクリプトの .write():

<div id="container">
<script>
document.write('<span style="color:red;">Hello</span>');
</script>
</div>

動的にロードされるスクリプトでは、これを次のものに置き換えます:

var container = document.getElementById("container");
var content = document.createElement("span");
content.style.color = "red";
content.innerHTML = "Hello";
container.appendChild(content);

または、コンテナーに他のコンテンツがない場合

var container = document.getElementById("container");
container.innerHTML = '<span style="color:red;">Hello</span>';

これらのガイドラインに従うことで、「'Document' で 'write' を実行できませんでした」エラーが発生することなく、非同期で読み込まれたスクリプトから DOM を効果的に操作できます。

以上が非同期スクリプト読み込みで document.write() の制限をオーバーライドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。