情况
我们有一个情况,需要在执行XHR / Ajax请求后通过单击打开新的浏览器标签页。
我们通过将Ajax请求设置为同步执行来保持可信点击事件的上下文,并且这样做效果很好。
问题
然而,在最新的Chrome版本(36)中,当Ajax调用存在一些滞后时,我们会遇到弹出警告... 仅2秒的滞后就足以使Chrome显示弹出警告,而不是像应该的那样打开标签页。代码本身是有效的,我可以多次点击该按钮,并且除了请求遇到一些滞后外,它始终有效。然后我得到了弹出警告...
问题
在同步Ajax请求期间是否应用了超时,需要在此期间完成以使受信任的事件仍然可用?
是否有任何方法可以规避这种情况?毕竟,通话已经同步并冻结直到结果到达。
谢谢。
更新JSFiddle
更新:我创建了一个JSFiddle来演示问题:http://jsfiddle.net/23JNw/9/
/**
* This method will give open the popup without a warning.
*/
function performSlowSyncronousRequest() {
$.ajax({
url: '/echo/html',
data: {delay: 2}, //JSfiddle will delay the answer by 2 seconds
success: function(){
window.open('http://www.thirtykingdoms.com'); //this causes the popup warning in Chrome
},
async: false
});
}