$.ajax().done()中的window.open和弹出窗口拦截器
window.open and pop-up blocker in $.ajax().done()
我通过jQuery进行了ajax调用;当它完成时,我需要在一个新的选项卡中打开一个URL。
我写了一个简单的函数:
var openWin = function() {
window.open('/UrlToOpen', '_blank');
win.focus();
}
如果我直接从JS代码中调用这个函数,它会在不触发弹出窗口阻止程序的情况下打开。
如果我从$.ajax().done()调用它,就像这样:
$.ajax({
url: 'ajaxUrl',
type: 'POST'
}).done(function (result) {
openWin();
});
弹出窗口阻止程序被触发。
此处演示:https://jsfiddle.net/dggwL5uj/
为什么?我该如何避免这种情况?
如果将ajax请求更改为同步,这可能会起作用。
$.ajax({
url: 'ajaxUrl',
type: 'POST',
async: false,
}).done(function (result) {
openWin();
});
如评论中所述,如果打开选项卡/弹出窗口的命令来自可信事件,则浏览器将只打开选项卡/窗口,而不会出现弹出窗口阻止程序警告。
相关文章:
- $.ajax().done()中的window.open和弹出窗口拦截器
- window.open:是否可以通过修改DOM来打开一个新窗口
- 在window.open()生成的窗口中执行JavaScript
- Javascript窗口.open中的UTF8字符串将被UIWebview's应该启动LoadWithReque
- Javascript窗口.open不工作
- Microsoft 边缘窗口.open() 不支持第二个弹出窗口的宽度高度
- 打开一个新的javascript窗口(.open)及其CSS样式
- 如何在asp.net中的javascript窗口.open中从gridview调用id
- jQuery窗口.open不工作
- 通过javascript窗口.open传递查询字符串值
- Javascript窗口.Open返回未定义
- 窗口.Open方法不起作用
- 窗口.open可以在Firefox中使用,但不能在IE或Chrome中使用
- 即:窗口.Open返回null
- 窗口.open + Mobile Devices + Canvas ==不工作
- 窗口.open在IE中打开两个弹出窗口
- d3.js窗口.open没有'It’我不管用
- JavaScript窗口.Open _self问题
- inapp浏览器窗口.open不会触发loadstart或loadstop事件
- 如何在谷歌标签管理器中录制Javascript驱动的窗口.open