0

私は w3schools で JavaScript を学んでいますが、「ドキュメントの読み込みが完了した後に document.write を実行すると、HTML ページ全体が上書きされる」という記述があり、実際にそうなっていることを例から見てきましたが、「私は実際に何が起こっているのか理解できず、ウェブサイトの種類は説明をスキップしているようです. スクリプトの一部を移動しました (

<h1>My First Web Page</h1>

<p>My First Paragraph</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction()
{
document.write("Oops! The document disappeared!");
}
</script>

</body>
</html>

)

スクリプトのさまざまなポイントからさまざまなパーツをロードすると効果が変わるかどうかを確認するため、何も起こらなかった.

レッスンを続ける前に実際に何が起こっているのか知りたいので、誰かがそれがどのように機能するかの簡単な要約を教えていただければ幸いです.

4

2 に答える 2

1

プログラミング全般に精通している場合は、s に気付くでしょう。streamこれは、継続的に読み取りまたは書き込みが可能で、(通常は) ランダム アクセスがないものを表します。

オブジェクトのdocument内部に、HTML テキストで構成される Web サーバーからの未加工のテキスト応答を表すストリームが隠されているとします。メソッドdocument.open()は、このストリームへのアクセスを許可します。

ページがロードされているとき (サーバーからのバイトがブラウザーに到着した直後)、ドキュメント ストリームは既に開かれており、読み取り/書き込みが行われています。ドキュメント (つまり、 のような外部リソースではなく、HTML 自体) の読み込みが完了すると<img />、ストリームは閉じられます。

...document.writeページの読み込み中に when が使用されるのはそのためです (つまり<script>document.write("foo");</script>、テキスト "foo" をドキュメント ストリームに直接挿入するため、ドキュメントが読み込まれたdocument.write に呼び出すと、ストリームが最初から (暗黙的に) 再度開かれます)。 、これにより上書きされます。

于 2013-08-29T00:26:05.593 に答える
0

何が起こるかは、使用しているブラウザによって異なります。最近まで、コードはすべてのブラウザーでページをテキストに置き換えていましたが、最近、一部のブラウザーで実装が変更され、まだ呼び出されていない場合に最初document.writeに暗黙的に呼び出すのではなく、単に呼び出しを無視するようになりました。document.open

ページがロードされた後でも、すべてのブラウザーでページを置き換えるために使用できdocument.writeますが、正しい方法で、つまりdocument.open最初に呼び出す必要があります。

于 2013-08-29T00:24:29.043 に答える