【发布时间】:2013-01-31 07:44:33
【问题描述】:
我已经检查了有关此的其他条目,但似乎都不是我的问题。下面的 HTML 页面在 Chrome 上运行良好。有三行输出。
然而,在 IE9 上,只输出第一行。关于为什么会这样的任何想法?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
var process = (function () {
var count = 0;
function _execute() {
count++;
document.write("Executed " + count + " time(s).<br\>");
}
return {
add: function () {
setTimeout(_execute, 50);
}
};
})();
</script>
</head>
<body>
<script>
process.add();
process.add();
process.add();
</script>
</body>
</html>
输出铬:
Executed 1 time(s).
Executed 2 time(s).
Executed 3 time(s).
输出 IE9:
Executed 1 time(s).
【问题讨论】:
-
预感:IE9 通过对函数对象的引用来键入计时器。尝试将每个调用包装在一个匿名函数中:
setTimeout(function() {_execute()}, 50) -
@Nevir 有趣的猜测;我想这是可能的。然而,这似乎是一个严重的错误。 编辑 - 哦等等;我敢打赌这是
document.write()。 -
尝试将
document.write()替换为console.log()。在文档关闭后调用document.write()(这里肯定会发生这种情况)会让整个事情一扫而光。 -
你是一个聪明的男人(或女人)尖尖的。问题是document.write()。我用页面上的 div 替换它并做了 innerHTML 的事情,现在它很漂亮。
标签: javascript internet-explorer-9 settimeout