私はdocument.write()
既存のhtmlをAJAXによってロードされたものに置き換えるために使用してきました。
通常のロードごとに1回使用すると(通常はAJAXなしを意味します)正常に動作しますが、複数回使用すると、既存のコンテンツを置き換えずに書き込みます
つまり、最初document.write()
にpage1で呼び出されると、page1は(意図したとおりに)上書きされますが、次に呼び出されると、新しいコンテンツがpage1に追加されます。どうして?
これが私の問題を再現するためのいくつかのコードです:
グローバルJavaScript(すべてのページ):
function loadXMLDoc(name) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.addEventListener("load", transferComplete, false);
xmlhttp.open("GET", name, true);
xmlhttp.send();
function transferComplete() {
document.write(xmlhttp.responseText);
history.replaceState(null, null, name);
}
}
1ページ目:
<a href="#" onclick="loadXMLDoc('page2.html');">p1</a>
2ページ目:
<a href="#" onclick="loadXMLDoc('page3.html');">p1</a>
3ページ目:
<a href="#" onclick="loadXMLDoc('page1.html');">p1</a>
それが予想される動作です。このwrite
メソッドは、レンダリング時にページにコンテンツを書き込むために使用されます。
ページが完了した後に使用された場合にのみページが置き換えられます。これは、最初に使用するときに、document.open()
書き込み先の新しいストリームを開始するために暗黙的に実行されるためです。
それを適切に使用してページを置き換えるには、document.open
最初に呼び出し、次にdocument.write
1回以上使用してコンテンツを書き込み、次に呼び出しdocument.close
て新しいページが完成したことをブラウザーに通知します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加