【问题标题】:New window in ajax call blockedajax 调用中的新窗口被阻止
【发布时间】:2016-05-30 12:17:41
【问题描述】:

我在互联网上搜索了一段时间的解决方案,但没有一个解决方案对我有用,或者我没有正确使用它(我认为)。

我有一个看起来像这样的函数,并在单击图像时被调用:

function goToGoogle() {
    setTimeout(function() {
        $.ajax("url/path", {
            data: "data"
        }, function(data){
            window.open("https://www.google.nl", "_blank");
        });
   }, 10000);
}

window.open 被调用时,会弹出一条消息并说弹出窗口被阻止。

我尝试创建一个包含 window.open 的变量 (var myWindow = window.open( ... );),然后使用 myWindow.location = "www.correct.url"; 设置正确的 url。但这会导致 console.log 中出现错误,提示 myWindow 未定义,因此无法调用 location。

我尝试的另一件事是在 ajax 调用中将 async 设置为 false,但这已被贬值。

有没有人如何确保它打开一个新窗口,即使在点击事件几秒钟后?

顺便说一句,我需要 10 秒的超时时间。不多不少。

【问题讨论】:

  • 有趣。似乎当超时时间高于 1sec(1000ms)时,chrome 说不:jsfiddle.net/x30j8ftq/2
  • 苏,你有什么建议?我需要 10 秒的超时.. @Pimmol
  • 我不确定。我会在这里考虑马丁的回答:stackoverflow.com/questions/4989537/…
  • @pimmol 它没有给我一个明确的解决方案。用户知道什么时候会打开一个新窗口,所以这不是问题..

标签: javascript jquery ajax window


【解决方案1】:

您的代码运行良好,因为

会弹出一条消息并说该弹出窗口已被阻止。

这只是阻止弹出窗口的浏览器策略。这取决于用户是否允许在您的网站上打开弹出窗口。

【讨论】:

  • 我的最终用户可能不太了解通勤和/或网站。如果弹出窗口被阻止的消息,他们可能不会考虑在我的网站上允许弹出窗口..
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
相关资源
最近更新 更多