【问题标题】:Bypassing popup blocker on iOS Safari / any mobile browser绕过 iOS Safari / 任何移动浏览器上的弹出窗口阻止程序
【发布时间】:2014-06-28 15:57:32
【问题描述】:

我正在尝试让我的网络应用打开另一个页面(它是由单击按钮触发的,但需要先进行一些其他处理)。

它可以在我的桌面上随处使用。在移动 Chrome 上,它会阻止它作为弹出窗口并让我知道它这样做了。在移动 Safari 上,它甚至没有告诉我弹出窗口被阻止。我尝试过像这样的同步 AJAX 调用:

$("#somebutton").click(function() {
  $.ajax({
    url:      myAppURL,
    async:    false,
    dataType: "text",
    success:  function() {
      window.open("http://google.com");
    }
  });
});

点击后更直接地打开窗口,稍后更改其位置:

var myWindow = window.open('')
...
myWindow.location = 'http://google.com'

但这也不起作用(它在桌面上起作用)。我完全没主意了。有没有人找到解决方法?

【问题讨论】:

  • 我现在正在尝试解决同样的问题(在 Iphone 4 上测试)。到目前为止,我尝试了几种技术(例如 window.postMessage 从开启窗口发送消息),但它们都没有奏效。我会及时通知你。
  • @BausTheBig 谢谢。当我尝试第二件事时,首先保存窗口对象,它可以在我的桌面上运行,但在 iPhone 上它会打开新窗口并且之后永远不会更改 url。
  • 对我来说也一样。因为父窗口(启动 window.open)不再是焦点,所以 Safari 上的 Javascript 被阻止。
  • @BausTheBig 如果有办法让父窗口保持焦点,那将解决问题,对吗?这就是我现在正在寻找的东西
  • 当您使用window.open 并打开弹出窗口时,您将失去对父窗口的关注。所以这不是一个选择,我猜。

标签: javascript jquery ios mobile web-applications


【解决方案1】:

你可以试试:

window.open("http://google.com", "_blank");

【讨论】:

  • 虽然这可能是解决问题的一个有价值的提示,但一个好的答案也可以证明解决方案。请EDIT 提供示例代码来说明您的意思。或者,考虑将其写为评论
  • 弹出窗口拦截器仍然会阻止这个。
猜你喜欢
  • 2015-05-05
  • 1970-01-01
  • 2019-05-27
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多