JavaScript 命令在 Safari 中未按顺序执行

标签 javascript macos safari

我在处理另一个问题时发现了这个错误。列出的 JavaScript 命令的顺序与它们在 Safari 中的执行顺序不同:

例子:

alert('here');
document.write('This is the hidden message.');
alert('You should be seeing the hidden message by now.');

在我的浏览器中,alertsdocument.write() 语句之前执行。我已经在使用 Safari 5.17、6.0 和 6.0.2 版的两个不同的 Mac OS X 上看到了这个错误,但我还没有确认是否还有其他人看到过这个错误。

这是 fiddle :

http://jsfiddle.net/akJD7/

谁能确认他们看到了这个,如果是,请告诉我为什么会这样?

最佳答案

严格来说,我认为这不是错误。只不过都是同步的,第二次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/

相关文章:

Jquery 触发器点击在 mac、Ipad 和 Iphone 中的 safari 浏览器上不起作用

css - Safari 上的 Flex box 问题——移动和桌面

javascript - 在 Javascript 中制作并行的复选框列表

Javascript在div中查找所选文本的出现位置

javascript - 如何从 php 服务器获取带有 $.ajax 的 zip

objective-c - MacOS 全局获取触控板压力

ios - 在 iOS webview 中调试 HTML

javascript - 我正在尝试将变量的值存储在 window.onload 上以供以后使用

objective-c - mount_smbfs 上出现身份验证错误

html - 特定背景图片不会显示在我的 Mac 上的帐户下