要将内容附加到文档,您应该只调用document.write()
在
如果您有电话document.write
在该上下文之外执行的某个地方,例如在事件处理程序中,没有进行解析,因此该字符串无处可去'foo'
to go.
根据以下规定应该发生什么原始 JavaScript 参考 http://docs.sun.com/source/816-6408-10/document.htm#1221642 is:
事件处理程序在原始文档关闭后执行,因此如果您不在事件处理程序中显式发出 document.open 方法,则 write 方法会隐式打开 mimeType text/html 的新文档。
也就是说,它假设您犯了一个错误并且打算这样做:
document.open('text/html');
document.write(html);
这会将整个文档替换为新内容。您还会注意到,因为您没有通过调用来完成此操作:
document.close();
...在 Firefox 中,“正在加载”的抖动仍在进行,期望将更多内容写入文档(但它从未出现)。
在这种情况下,你是document.write()
ing 一个字符串:
Hello bobince! How are you today?
这显然不是一个有效的 HTML 文档。 Chrome(和 Safari,其行为相同)尝试将其解析为 HTML 文档,但失败,因为它是文档元素 () 之外的非空白文本内容,这是不允许的。如果您在名称输入中添加一些标签:
Hello <em>bobince</em>! How are you today?
您将看到 元素之外的所有内容都被丢弃。 Firefox 和 IE 设法应用他们的“修复任何元素外部的文本”损坏的 HTML 规则来拯救你,但 Chrome 却没有。
如果你想document.write()
一个新文档,你应该确保它确实是一个完整的文档:
<html><head><title>Greetings</title><body><p>Hello bobince! How are you today?</p></body></html>
或者,如果你想document.write()
一个文本字符串,理论上你应该调用:
document.open('text/plain');
在 write() 之前。但要注意,Chrome 或 Safari 不支持 mimetype 参数;他们总是将您编写的内容视为 HTML。
任何状况之下,你可能不想使用这种方法。如果您想要添加(或更改)现有页面,您通常应该使用 DOM 方法,例如在状态输出 div 上设置文本,或使用 innerHTML 替换正文内容。
document.write()
在某些地方需要(特别是当您从头开始创建新窗口或框架时),但否则它通常是错误的,应该怀疑地看待。