Javascript window.open в сафари
У меня возникла проблема с открытием нового окна в сафари (как для ipad, так и для настольных версий), который вращается вокруг блокировщика всплывающих окон. В основном я обнаружил, что если window.open не вызывается из события click, сафари заблокирует всплывающее окно.
Событие, вызывающее window.open, в настоящее время изменено из списка.
Есть ли какой-либо способ, кроме переключения какого события мы обрабатываем, чтобы обмануть сафари, чтобы разрешить всплывающее окно в этом сценарии? (событие onchanged)
Ответы
Ответ 1
Я не думаю, что есть способ открыть новое окно в сафари для мобильных устройств, отличное от нажатия на кнопку. Обратите внимание на этот fooobar.com/questions/225557/..., который аналогичен. Я не уверен, что это сработает, но вы можете посмотреть нажатием кнопки программно с помощью функции jquery trigger().
Вы также можете посмотреть варианты отображения диалога на своей собственной странице, возможно, используя такие инструменты, как jquery ui.
НТН!
Ответ 2
В сафари есть глушитель блокировщика всплывающих окон, который не отображается, когда ссылка заблокирована.
Чтобы проверить, включен ли блокировщик всплывающих окон, перейдите в настройки сафари > безопасность > что-то вроде блокировки всплывающих окон.
Чтобы пересечь его простым способом, так как я не могу открыть новое окно, я показываю предупреждение, в котором всплывающее окно заблокировано.
В моем случае я использую select input для открытия внешних ссылок:
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 не работал со мной.
Ответ 3
Вы можете справиться с этим, используя
document.location
вместо
window.open
С уважением,
Vince