如题所述
因为浏览器的安全策略。
很多浏览器会有一套判断机制,来防止有恶意代码执行一些可能会对用户产生影响的内容。
新建窗口就是这一类。试想一下如果JS可以完全不受限制的创建窗口的话,你打开一个比较流氓的页面,它可以不停的自动弹出窗口,就像病毒一样。
浏览器判断是不是可以弹出窗口其中有一个策略就是判断这个操作是不是用户主动触发的。比如你点一个按钮,按钮的onclick时间里面执行创建了一个新窗口,浏览器判断出点按钮这件事是用户主动触发,所以这个窗口可以弹出来。
简单的说,应该就是由用户主动触发的一个线程中的操作,不会被屏蔽(我的理解,并没有考证,而且不同浏览器可能策略不一样)
如果按钮的onclick时间里面有一个异步请求,在回调中打开新窗口,因为这个操作并不是在用户点击触发的执行线程里,所以被拦截了。
解决方法之一就是把请求改成同步的,应该就不会被拦截。
很多浏览器会有一套判断机制,来防止有恶意代码执行一些可能会对用户产生影响的内容。
新建窗口就是这一类。试想一下如果JS可以完全不受限制的创建窗口的话,你打开一个比较流氓的页面,它可以不停的自动弹出窗口,就像病毒一样。
浏览器判断是不是可以弹出窗口其中有一个策略就是判断这个操作是不是用户主动触发的。比如你点一个按钮,按钮的onclick时间里面执行创建了一个新窗口,浏览器判断出点按钮这件事是用户主动触发,所以这个窗口可以弹出来。
简单的说,应该就是由用户主动触发的一个线程中的操作,不会被屏蔽(我的理解,并没有考证,而且不同浏览器可能策略不一样)
如果按钮的onclick时间里面有一个异步请求,在回调中打开新窗口,因为这个操作并不是在用户点击触发的执行线程里,所以被拦截了。
解决方法之一就是把请求改成同步的,应该就不会被拦截。
温馨提示:答案为网友推荐,仅供参考