我通过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/

为什么? 如何避免这种情况?

#1楼 票数:1 已采纳

如果将您的ajax请求更改为同步,则可能有效。

$.ajax({
        url: 'ajaxUrl',
        type: 'POST',
        async: false,
    }).done(function (result) {
        openWin();
}); 

如评论中所述,如果打开选项卡/弹出窗口的命令来自受信任的事件,则浏览器将仅打开选项卡/弹出窗口,而不会显示弹出窗口阻止程序警告。

  ask by Andrea Colleoni translate from so

未解决问题?本站智能推荐:

1回复

在弹出窗口中打开局部视图

我正在尝试打开一个弹出窗口,向我的用户显示其他信息。 首先,我有点困惑: Modal窗口和弹出窗口之间的区别是什么? 接下来,这是我到目前为止所做的事情: modal类仅仅是此操作链接中使用的标记,用于标识调用来自的链接。 接下来,控制器局部视图动作: 部分观点
2回复

Google Chrome中的Ajax / Jquery和window.open触发弹出窗口阻止程序

我一直在尝试使用ajax和jquery替代window.open来避免弹出窗口阻止程序,但没有成功。 我尝试过的一些替代方法是: 1) 2) 最后,模态对话框作为引导程序是一种替代方法,它不允许我加载aspx页面。 任何帮助是极大的赞赏。
3回复

如何使用getScript回调函数中生成的URL打开新窗口,并避免弹出窗口阻止程序?

我遇到的问题是当我尝试执行类似下面的代码时,窗口将被弹出窗口阻止程序阻止。 我正在使用getScript,以便我可以发出跨域请求。 我正在使用jQuery 1.4.2来执行以下操作。 将被阻止的代码示例: 越过阻止程序但未及时获取URL的代码示例: 如何使用getScr
1回复

将AJAX调用添加到函数触发的弹出窗口阻止程序

我有一个客户想要在一个居中的弹出窗口中打开各种大小的图像。 我试图让他们使用FancyBox,但他们不想要插页式演示,所以... 我最初打开一个通用弹出窗口,它根据图像大小调整大小并居中onload但是他们不喜欢移位所以我添加了一个PHP脚本来回显大小并使用jQuery来获取大小信息以提
2回复

ajax / jquery - 打开简单弹出窗口的脚本

我需要打开弹出窗口的脚本,比如灯箱。 但没有图像 它必须从html文件加载视频播放器代码,并将视频文件ID发送到此代码 html中的播放器代码: 所以我需要脚本打开上面的代码弹出窗口。 谢谢!
1回复

在Ajax中打开一个弹出窗口

嗨,我有一个“登录”按钮,之后如果登录顺利,我必须关闭“登录”弹出窗口并打开另一个。 这是我的代码: 我所有的$('#infoParticelle').popup('open')都不起作用,但是在单击按钮之外起作用。 有趣的是,关闭弹出窗口$('#login').popup('clo
2回复

单击内部按钮时,模态弹出窗口不保存到数据库

我是jquery和ajax的新手,所以请耐心等待。 我有这个链接: 单击时显示此弹出窗口: 当我在文本区域中输入文本并在下面的脚本中通过alert(msgContent)显示其内容时,它将显示 但是,当我尝试通过ajax将其传递到php页面时,它不会传递。 有什么事吗
3回复

收到ajax的结果后打开一个弹出框

我有一个正常工作的ajax代码,并给出了所需的结果。 我想修改这段代码,并希望当从ajax收到回复时,应该打开一个弹出/模态框。 我只需点击一下按钮即可打开弹出/模态框 但不知道如何在ajax中自动打开它。 这是我的ajax代码 任何人都可以告诉我它是如何做到的