在safari中的javascript window.open

时间:2012-03-26 21:45:04

标签: javascript ipad safari

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

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

除了切换我们处理哪个事件以欺骗safari以允许在这种情况下弹出窗口之外,还有其他方法吗? (改变事件)

4 个答案:

答案 0 :(得分: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>

的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触发器不适用于我。

答案 1 :(得分:13)

我认为除了点击按钮之外,还有一种方法可以在手机游戏中打开一个新窗口。请参阅类似的StackOverflow Question。我不确定它是否有效,但您可以查看triggering a button click programatically using jquery's trigger() function

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

HTH!

答案 2 :(得分:0)

当 Safari 阻止 pop uo 时,即使您单击链接,它也会显示为未单击。您可以使用以下功能启用 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);
    }

请记住

答案 3 :(得分:-6)

您可以使用

处理此问题
document.location

而不是

window.open

此致 文斯