簡體   English   中英

JS語句僅在新標簽頁中在Safari中執行,但不應在新標簽頁中執行

[英]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.

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