javascript window.open in safari

javascript window.open in safari

本文关键字:safari in open window javascript      更新时间:2023-09-26

我在safari(ipad和桌面版本)中打开一个新窗口时遇到了一个问题,该窗口围绕弹出窗口阻止程序。基本上,我发现如果window.open不是从点击事件中调用的,safari会阻止弹出窗口。

调用window.open的事件当前正从列表框中挂起。

在这种情况下,除了切换我们处理的事件之外,还有其他方法可以诱骗safari允许弹出吗?(onchanged事件)

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>

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>

检查弹出窗口是否被阻止的代码如下:

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

PS:jquery触发器对我不起作用。

我认为除了点击按钮之外,没有其他方法可以在移动safari中打开新窗口。请参阅类似的StackOverflow问题。我不确定它是否有效,但您可以使用jquery的trigger()函数以程序方式触发按钮点击。

您可能还想查看在自己的页面中显示对话框的选项,也许可以使用jqueryui之类的工具。

啊!

当Safari阻止弹出窗口时,即使您单击了链接,它也会显示为未单击。您可以在以下功能中启用Safari弹出

"safariAllowPopups": "true"

要点击Safari弹出窗口中的允许按钮,请使用以下代码:

 ((IOSDriver<IOSElement>) driver).context("NATIVE_APP");
 ((IOSDriver<IOSElement>) driver).findElement(By.id("Allow")).click();
 try{
          Thread.sleep(5000);
    }catch (InterruptedException e){
          System.out.println(e);
    }