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)
To use window. open() in safari you must put it in an element's onclick event attribute.
The Javascript window. open() method is used to open a new tab or window with the specified URL and name. It supports various parameters that can be used to specify the type and URL location of the window to be opened. Syntax: window.open(url, windowName, windowFeatures)
In JavaScript, window.open() method is used to open a new browser window or a new tab depending on the browser setting and the parameter values.
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.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With