ehf*_*eng 9 javascript google-chrome
当我在Chrome(ver 2)中运行它时,它不会返回字符串,但它适用于Firefox(第3版).为什么是这样?
<html>
<head>
<script type="text/javascript">
function disp_prompt() {
var name=prompt("Please enter your name","Harry Potter");
if (name!=null && name!="") {
document.write("Hello " + name + "! How are you today?");
}
}
</script>
</head>
<body>
<input type="button" onclick="disp_prompt()" value="Display a prompt box" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
bob*_*nce 32
要将内容附加到文档,只应document.write()在<script> -block解析阶段调用.
如果你有一个调用document.write它在那个上下文之外执行的地方,比如在你的事件处理程序中,就没有解析,所以没有任何地方'foo'可以去.
根据原始的JavaScript引用应该发生什么:
事件处理程序在原始文档关闭后执行,因此如果未在事件处理程序中显式发出document.open方法,则write方法将隐式打开mimeType text/html的新文档.
也就是说,它假设你犯了一个错误并打算这样做:
document.open('text/html');
document.write(html);
Run Code Online (Sandbox Code Playgroud)
用新内容替换整个文档.您还会注意到,因为您没有通过调用完成此操作:
document.close();
Run Code Online (Sandbox Code Playgroud)
...在Firefox中,"加载"悸动仍然是动画,期望将更多内容写入文档(但它永远不会出现).
在这种情况下,你是document.write()一个字符串:
Hello bobince! How are you today?
Run Code Online (Sandbox Code Playgroud)
这显然不是一个有效的HTML文档.Chrome(和Safari,其行为相同)试图将其解析为HTML文档,但由于它是文档元素(<html>)之外的非空白文本内容而失败,这是不允许的.如果在名称输入中放入一些标记:
Hello <em>bobince</em>! How are you today?
Run Code Online (Sandbox Code Playgroud)
你会看到<em>元素之外的所有内容都被丢弃了.Firefox和IE设法应用他们的"修复任何元素之外的文本"破坏HTML规则来拯救你,但Chrome没有.
如果您想要document.write()一个新文档,您应该确保它确实是一个完整的文档:
<html><head><title>Greetings</title><body><p>Hello bobince! How are you today?</p></body></html>
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要document.write()一个文本字符串,理论上你应该调用:
document.open('text/plain');
Run Code Online (Sandbox Code Playgroud)
在write()之前.但请注意,Chrome或Safari不支持mimetype参数; 他们总是将你写的内容视为HTML.
无论如何,您可能不希望使用此方法.如果要添加(或更改)现有页面,通常应使用DOM方法,例如在状态输出div上设置文本,或使用innerHTML替换正文内容.
document.write() 在一些地方需要(特别是当你从头开始创建一个新的窗口或框架时),但是否则它通常是错误的,应该被怀疑地看待.
不要使用document.write.如果你把它改成类似的东西
if (name != null && name != "") {
document.getElementById('foo').innerHTML = "Hello " + name + "! How are you today?";
}
<body>
<input ...
<div id='foo'> </div>
</body>
Run Code Online (Sandbox Code Playgroud)
document.write有很奇怪的行为.您希望将文本写入哪里?
| 归档时间: |
|
| 查看次数: |
15070 次 |
| 最近记录: |