javascript window.open в сафари - PullRequest
29 голосов
/ 27 марта 2012

У меня возникла проблема с открытием нового окна в Safari (как для iPad, так и для настольной версии), которое вращается вокруг блокировщика всплывающих окон. По сути, я обнаружил, что если window.open не вызывается из события щелчка, safari блокирует всплывающее окно.

Событие, которое вызывает window.open, в настоящее время отменяется из списка.

Есть ли другой способ, кроме переключения того события, которое мы обрабатываем, чтобы обмануть сафари, чтобы разрешить всплывающее окно в этом сценарии? (перенесенное событие)

Ответы [ 2 ]

30 голосов
/ 25 июля 2012

В сафари есть глушитель блокировки всплывающих окон, который не отображается при блокировке ссылки.

Чтобы проверить, активен ли блокировщик всплывающих окон, перейдите в настройки сафари> Безопасность> что-то вроде блокировки всплывающих окон..

Чтобы пересечь его простым способом, так как я не могу открыть новое окно, я отображаю предупреждение, показывающее, что всплывающее окно заблокировано.

В моем случае я использую выбор входов, чтобы открытьвнешние ссылки:

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 у меня не работал.

13 голосов
/ 27 марта 2012

Я не думаю, что есть способ открыть новое окно в мобильном сафари, кроме как нажатием кнопки. Обратитесь к этому StackOverflow Вопрос , который похож. Я не уверен, что это сработает, но вы можете посмотреть на , вызывающий нажатие кнопки программно с помощью функции trigger () jquery .

Возможно, вы захотите посмотреть варианты отображения диалогового окна на своей странице, возможно, с помощью таких инструментов, как jquery ui.

НТН!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...