在safari中的javascript window.open

the*_*hip 30 javascript safari ipad

我遇到了一个问题,在safari(包括ipad和桌面版本)中打开一个围绕弹出窗口阻止程序的新窗口.基本上我发现如果没有从click事件调用window.open,safari将阻止弹出窗口.

调用window.open的事件当前是从列表框中更改的.

有什么方法除了切换我们处理的事件以欺骗safari以允许在这种情况下弹出窗口?(互换活动)

Luc*_*fim 30

当链接被阻止时,Safari会显示弹出窗口阻止消音器.

要检查弹出窗口阻止程序是否处于活动状态,请继续执行safari设置>安全性>阻止弹出窗口等操作.

要以简单的方式跨越它,因为我无法打开一个新窗口,我会显示一个警告,显示弹出窗口被阻止.

在我的例子中,我使用选择输入来打开外部链接:

HTML

<select id="retailer" class="windowOpen retailer-submenu">
    <option value="null">Select one</option>
    <option value="http://amazon.com">Amazon</option>
    <option value="http://ebay.com">eBay</option>
</select>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

<script type='text/javascript'>
    $('select.windowOpen').change(function(){
        var url = $(this).val();

        var open = window.open(url);
        if (open == null || typeof(open)=='undefined')
            alert("Turn off your pop-up blocker!\n\nWe try to open the following url:\n"+url);
    });
</script>
Run Code Online (Sandbox Code Playgroud)

检查弹出窗口是否被阻止的代码就是这样:

var open = window.open('http://google.com');
if (open == null || typeof(open)=='undefined')
    alert("Turn off your pop-up blocker!");
Run Code Online (Sandbox Code Playgroud)

PS:jquery触发器不适用于我.


Sco*_*nce 13

我不认为除了点击按钮之外,还有一种方法可以在移动Safari中打开一个新窗口.请参阅此StackOverflow问题,该问题类似.我不确定它是否会起作用,但您可以使用jquery的trigger()函数以编程方式触发按钮单击.

您可能还想查看在您自己的页面中显示对话框的选项,可能使用jquery ui等工具.

HTH!

  • 遗憾的是,即使用户生成了点击...这会触发异步操作(比如从IndexedDB中提取数据)...这里回调试图打开窗口:-( (4认同)
  • 在我看来,真正的问题似乎是内置的静音弹出窗口拦截器. (2认同)