我有一个非常奇怪的问题,我无法解决这个问题,如果警报窗口在小于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的错误,还是我做错了什么?
请帮助:)
答案 0 :(得分:0)
好的,我想通了,问题是Safaris警报/提示等现在已经不再阻止浏览器了。
因此,即使在发出警报之后,JS似乎仍会继续执行。
解决方案是启动计数器,触发警报,然后将其余代码包装在setTimeout中,延迟时间非常短,我用了5ms。
修复了它