Нажмите кнопку ПРИНЯТЬ, и она заработает. Это сработало для меня ...

аюсь открыть новое окно примерно так:

$('#wrapper').click(function() {
    window.setTimeout(function() {
        //alert('hi');
        window.open("http://example.com", "ExternalLinks", "resizable=yes, scrollbars=yes, status=yes");
    }, 1000);
});

Это работает в Firefox, но не в Chrome или Safari (пока я только что проверил на Mac).alert() работает во всех браузерах, так что, кажется, что-то мешаетwindow.open от выполнения в Safari / Chrome. Кроме того, если я удалюsetTimeout и просто позвонитьwindow.open тогда он работает во всех 3 браузерах. Это почти как если быwindow.open вложен слишком далеко отclick событие, то это не работает в Safari / Chrome.

Итак, вы знаете, у меня есть полностью Flash-сайт, и я пытаюсь открыть внешние ссылки в новом окне, поэтому я читаю хэш-тег в URL (например, htp: //example.com/# / facebook /) и если это соответствует определенным пунктам, то я звонюwindow.open открыть конкретный URL. У меня нет доступа к источнику Flash, или я бы справился там.

Есть идеи?

Ответы на вопрос(3)

Еще один обходной путь
Просто откройте всплывающее окно с параметрами ПРИНЯТЬ и ОТМЕНА и прикрепите window.open
Нажмите кнопку ПРИНЯТЬ, и она заработает. Это сработало для меня ...

Решение Вопроса

которые мешают этому работать. Единственный javascript, которому разрешено открывать новое окно в Safari / Chrome, - это javascript, напрямую связанный с обработчиками кликов (и другими обработчиками прямого пользовательского ввода). В прошлых версиях люди находили способы обмануть (например, генерировать какой-то другой элемент - форму или div - и имитировать пользовательский ввод с помощью javascript), но в более новых версиях умнее обнаруживать это. Я бы порекомендовал перенастроить вещи так, чтобы вы не использовали отложенное всплывающее окно - это тот тип вещей, который обычно может раздражать пользователя.

 Ben Lee12 янв. 2011 г., 17:46
Стоит также отметить, что хотя Safari и Chrome имеют эти строгие блокировщики всплывающих окон, встроенные и включенные по умолчанию, это не значит, что в других браузерах их нет - просто для других браузеров они либо являются надстройками, либо автоматически не включаются. во время установки.

проверив возвращаемое значение window.open () на неопределенность. Если это так, вызовите alert () с сообщением для пользователя, чтобы отключить блокировщик всплывающих окон.

var myWin = window.open([args]);

if (myWin == undefined)
   alert('Please disable your popup blocker');
 matthewpavkov06 февр. 2014 г., 02:50
Полезный ответ. Благодарю.

Ваш ответ на вопрос