【发布时间】:2016-01-20 15:05:28
【问题描述】:
这是一个在浏览器窗口中打印数字一到十的简单程序。
var t = 1;
var a = function timer() {
if (t < 11) {
document.write(t + "<br/>");
t = t + 1;
} else {
clearInterval(handle);
}
}
var handle = setInterval(a, 100);
这适用于 Chrome(数字 1 到 10 出现,它们之间有短暂的延迟),但不适用于 Firefox(仅出现 1,没有错误)。为什么?
我知道我可以使用console.log,但这不是重点。为什么 document.write 在 Chrome 和 Firefox 之间的工作方式不同?
【问题讨论】:
-
加载页面后,文档将关闭。你不能再在上面使用
document.write,因为它会创建一个新文档,有效地覆盖你在浏览器中的页面。使用更明智的方法,例如 DOM 方法或(至少出于测试目的)console.log。 -
@NiettheDarkAbsol:对。所以问题是,为什么 Chrome 不这样做呢? jsbin.com/lucajut - 在 Chrome 上,它显示从 1 到 10 的数字,但在 Firefox 上它停在 1。
-
@AdamKonieska 有趣的是如何更改使它不起作用的代码位,突然使它起作用:p
-
我对这方面的多个方面感到惊讶。 Chrome 执行 1-10,Firefox 停止在 1 而不是显示 1,然后替换 2,然后是 3,直到最后只显示 10。
-
对我来说,Opera 和 Safari 遵循 Chrome 的行为,而 IE 遵循 Firefox 的行为。情节变厚了。
标签: javascript google-chrome firefox