[英]JS statement gets executed in Safari, only in new tabs, but it shouldn't
我有一個很奇怪的問題,我無法解決問題,如果關閉警報窗口的時間少於XY毫秒,則下面的代碼應該發出XMLHTTPRequest。
它在所有瀏覽器中都有效,並且在我訪問時不會觸發loadApi()函數,而在Safari中,無論我等待多長時間才能關閉警報,它都將執行。
但這只會在我在Safari中打開一個新標簽頁然后訪問該頁面時發生,如果我再次在同一標簽頁中訪問同一頁面,則代碼將不會執行。
var a = window.performance.now();
alert('yo yo yo');
var b = window.performance.now();
if ((b - a) < 80) {
console.log('yes');
loadApi(); // this makes the XMLHTTPRequest which triggers a DB insert
}
在Safari中,當我在一個新的選項卡中訪問代碼時,它變得更奇怪了,該代碼被執行並執行XMLHTTPRequest,但console.log()從未觸發。 控制台只是顯示為空。
那是Safari的錯誤,還是我做錯了什么?
請幫忙 :)
好的,我想通了,問題是Safaris的警報/提示等在一段時間內不再阻止瀏覽器了。
因此,即使發出警報后,JS有時似乎仍會繼續執行。
解決方案是啟動計數器,觸發警報,然后將剩余的代碼包裝到setTimeout中,延遲很短,我用了5ms。
修復它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.