Javascript document.write()是否覆盖文档?
这: 在html中调用,如:Javascript document.write()是否覆盖文档?,javascript,html,xmlhttprequest,document.write,Javascript,Html,Xmlhttprequest,Document.write,这: 在html中调用,如: function myFunction() { document.write("sup"); } 这样称呼: function loadFile(uri) { var r = new XMLHttpRequest(); document.write("trying to open: " + uri); r.open('GET', uri, true); r.send(null); r.onreadystatechan
function myFunction()
{
document.write("sup");
}
这样称呼:
function loadFile(uri)
{
var r = new XMLHttpRequest();
document.write("trying to open: " + uri);
r.open('GET', uri, true);
r.send(null);
r.onreadystatechange = function()
{
if (r.readyState == 4)
{
myFunction();
}
}
}
function myFunction()
{
document.write("sup");
}
加载文件(“filename.txt”);
似乎正在覆盖我的整个html文件。也就是说,当我在Firefox中运行它时,它只显示字符串sup
(这是页面的全部内容),但页面似乎仍在加载(FF的加载图标仍在那里,显然是无限的)
首先,这将仅用于本地、脱机,作为一种快速便捷的数据显示方式(使用html+js和web浏览器,而不是纯文本文件)。我想要的是加载一个本地文本文件,然后将其部分内容作为html页面的一部分。与我的第一个示例相同,但首先加载文本文件。问题是,当加载文档后运行document.write时,它会覆盖整个文档。如果在此之前运行,则不会覆盖它 您要做的是设置特定元素的innerHtml,例如:
<div id="myDiv">
<script>loadFile("filename.txt");</script>
</div>
让我们看一下浏览器在接收html文件时的操作
document.open()
打开文档进行编写。您还可以使用document.write()
开始向文档写入内容。最后,您可以使用document.close()
关闭文档进行编写。由于在编写之前始终需要打开文档进行编写,因此调用document.write()
始终会导致隐式document.open()
在html正文中插入document.write()
调用是一种常用的技术,用于将字符串内容动态插入html页面
例如,如果在html文件主体中执行document.write(holla”)
,浏览器将在收到html文件后执行以下操作
- JavaScript引擎将在遇到它时执行
,然后将document.write()
写入文档中的特定行,就像字符串已经是html文件的一部分一样!由于在解析html文件的过程中调用了“holla”
,因此它只是作为页面的一部分进行解析李>document.write()
document.write()
,那也就不足为奇了。相反,在解析html后调用document.write()
那么你认为会发生什么
正如我前面提到的,在将文档写入之前,需要打开文档进行编写。理论上,我们可以附加到现有内容,也可以直接覆盖它。好的,如果我们附加到内容中,我们将得到一个无效的html页面,因为新值将出现在结束标记之后。因此,更明智的行为是覆盖内容,而这正是发生的情况。是的,正如您所说的,在加载页面后调用时会覆盖文档。如果您想操作现有的DOM,应该先学习一些基本教程。linstantnoodles解释了这个文档。写得非常好,您可能会尝试使用这种脚本注入技术,但是
<div id="myDiv">
<script>loadFile("filename.txt");</script>
</div>
document.getElementById("myDiv").innerHTML="Sup";