简体   繁体   中英

javascript window.open in safari

I've run into an issue with opening a new window in safari (both ipad and desktop versions) that revolves around the popup blocker. Basically I've found that if window.open isn't called from a click event, safari will block the popup.

The event that is calling window.open is currently onchanged from a list box.

Is there any way other than switching which event we handle to trick safari into allowing a popup in this scenario? (the onchanged event)

The safari has a pop-up blocker silencer not show when a link is blocked.

To check if the pop-up blocker is active, go on safari settings > security > something like blocking pop-ups.

To cross it in a simple way, since I can not open a new window, I display an alert showing pop-up blocked.

In my case, I use select inputs to open external links:

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>

The code to check if a pop-up is blocked is just this:

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

PS: the jquery trigger did not work with me.

I don't think there is a way to open a new window in mobile safari other than from a button click. Refer to this StackOverflow Question which is similar. I'm not sure if it will work, but you can look at triggering a button click programatically using jquery's trigger() function .

You might also want to look at options of showing a dialog within your own page, maybe using tools like jquery ui.

HTH!

When Safari block the pop uo even if you click the link it appears as its not clicking.you can use below in your capabilities to enable safari popup

"safariAllowPopups": "true"

To Click on the Allow button in Safari Pop up use below code:

 ((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);
    }

Please remember

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM