Javascript Document.write只覆盖页面一次
我一直在使用Javascript Document.write只覆盖页面一次,javascript,html,ajax,Javascript,Html,Ajax,我一直在使用document.write()用AJAX加载的html替换现有html。 如果每次正常加载使用一次,它就可以正常工作(正常情况下,我指的是没有AJAX),但是如果多次使用,它就可以在不替换现有内容的情况下进行写入 换句话说,第一次在第1页调用document.write(),第1页将被覆盖(按预期),但下一次调用时,新内容将添加到第1页。为什么? 下面是一些代码来重现我的问题: 全局JavaScript(在所有页面上): 第一页: 第二页: 第三页: 在ajax更
document.write()
用AJAX加载的html替换现有html。如果每次正常加载使用一次,它就可以正常工作(正常情况下,我指的是没有AJAX),但是如果多次使用,它就可以在不替换现有内容的情况下进行写入 换句话说,第一次在第1页调用
document.write()
,第1页将被覆盖(按预期),但下一次调用时,新内容将添加到第1页。为什么?
下面是一些代码来重现我的问题:
全局JavaScript(在所有页面上):
第一页:
第二页:
第三页:
在ajax更新后写入文档后,调用document.close()
值得指出的是,如果用ajax响应的结果替换整个文档,很难看出引入这种复杂性比简单地发布一个普通的
或遍历
链接有什么好处。这是预期的行为。write
方法用于在页面呈现时将内容写入页面
它仅在页面完成后使用页面时替换页面,因为第一次使用它时,它将执行隐式document.open()
,以启动要写入的新流
要正确使用它来替换页面,请调用
文档。首先打开,然后使用文档。编写一次或多次来编写内容,然后调用文档。关闭以告知浏览器新页面已完成。我们可以看到一些代码吗?您最好使用$(文档).html(…)
大于document.write()
您不应该使用document.write
来处理类似的东西。或者任何类型的内容。正如您在回答中提到的,您需要使用document.close()来完成文档。write()但是document.write永远不能与脚本在同一个窗口中使用,除非它是内联的,并且在页面完成加载之后,因为它会擦除它所在的页面。谢谢!我使用的是document.write
,因为当我使用document.body.innerHTML
仅替换body(或其他部分)时,一切都需要时间才能正常运行。看起来浏览器正在呈现用户眼前的一切,而这还不到一半-pleasant@user3088260重新加载整个页面也需要时间。这不是我的意思,请查看并尝试单击链接。页面的排列有点奇怪。@user3088260当您只需要更新页面的最小部分时,ajax的优势就实现了。如果要更新整个页面,最好使用简单的链接或表单,因为它们就是这样做的——替换整个页面。JavaScript呢?如果我使用innerHTML
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);
}
}
<a href="#" onclick="loadXMLDoc('page2.html');">p1</a>
<a href="#" onclick="loadXMLDoc('page3.html');">p1</a>
<a href="#" onclick="loadXMLDoc('page1.html');">p1</a>