Reputation: 1211
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)
Upvotes: 37
Views: 82530
Reputation: 1026
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);
}
Upvotes: -1
Reputation: 3832
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:
<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>
<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: the jquery trigger did not work with me.
Upvotes: 38
Reputation: 3634
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!
Upvotes: 15