我在处理另一个问题时发现了这个错误。列出的 JavaScript 命令的顺序与它们在 Safari 中的执行顺序不同:
例子:
alert('here');
document.write('This is the hidden message.');
alert('You should be seeing the hidden message by now.');
在我的浏览器中,alerts
在 document.write()
语句之前执行。我已经在使用 Safari 5.17、6.0 和 6.0.2 版的两个不同的 Mac OS X 上看到了这个错误,但我还没有确认是否还有其他人看到过这个错误。
这是 fiddle :
谁能确认他们看到了这个,如果是,请告诉我为什么会这样?
最佳答案
严格来说,我认为这不是错误。只不过都是同步的,第二次alert之前没有repaint。重绘通常不会在浏览器事件循环的同一“滴答声”内发生(尽管 document.write
似乎会在其他浏览器(例如 Chrome)中强制重绘)。
这个(丑陋的)解决方法应该可以解决它:
alert('here');
document.write('This is the hidden message.');
setTimeout(function() {
alert('You should be seeing the hidden message by now.');
}, 0);
关于JavaScript 命令在 Safari 中未按顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166459/