簡體   English   中英

JavaScript命令在Safari中不按順序執行

[英]JavaScript commands not executed in order in Safari

我在處理另一個問題時發現了這個bug。 列出的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上看到了這個錯誤,但我還沒有確認其他人已經看過這個。

這是小提琴:

http://jsfiddle.net/akJD7/

任何人都可以確認他們看到了這個,如果有,請告訴我為什么會這樣?

嚴格來說,我認為這不是一個錯誤。 只是它是全部同步的,並且在第二次警報之前沒有重新繪制。 重繪通常不會發生在瀏覽器事件循環的同一“滴答”內(盡管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);

試試這個,如果你有jQuery: http//jsfiddle.net/2Kcuz/

根據我的評論,我的猜測是你用document.write添加的文本還沒有渲染(但它仍然存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM