от
Иногда, я наткнулась на веб-страницу, которая пытается открыть новое окно (для ввода данных пользователем, или что-то важное), но блокировщик всплывающих окон предотвращает это от случаться. Какие методы могут вызывать использовать окно, чтобы убедиться, что новое окно правильно запустил?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

8 Ответы

0 голосов
от
Иногда, я наткнулась на веб-страницу, которая пытается открыть новое окно (для ввода данных пользователем, или что-то важное), но блокировщик всплывающих окон предотвращает это от случаться. Какие методы могут вызывать использовать окно, чтобы убедиться, что новое окно правильно запустил?
0 голосов
от
Если вы используете JavaScript, чтобы открыть всплывающее окно, вы можете использовать что-то вроде этого:
var newWin = window.open(url);             

if(!newWin || newWin.closed || typeof newWin.closed=='undefined') 
{ 
    //POPUP BLOCKED
}
0 голосов
от
Я попробовал несколько из приведенных выше примеров, но я не мог заставить их работать с Chrome. Этот простой подход, кажется, работает в Chrome 39, в Firefox 34, сафари 5.1.7, и IE 11. Вот фрагмент кода из нашей библиотеки на JS.
openPopUp: function(urlToOpen) {
    var popup_window=window.open(urlToOpen,"myWindow","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=400, height=400");            
    try {
        popup_window.focus();   
    } catch (e) {
        alert("Pop
0 голосов
от
Обновление: Существуют окна с очень древних времен. Первоначальная идея была показать другим материалам без закрытия главного окна. Как сейчас, есть и другие способы сделать это: JavaScript-это возможность отправлять запросы на сервер, поэтому всплывающие окна используются редко. Но иногда они еще пригодятся. В прошлом зло сайтах много злоупотребляли всплывающие окна. Плохая страница может открыть тонн всплывающие окна с рекламой. Поэтому сейчас большинство браузеров пытаются заблокировать всплывающие окна и защитить пользователей. Многие браузеры блокируют всплывающие окна, если они называются за пределами пользователем запускаются обработчики событий, например onclick. Если вы думаете об этом, это немного сложно. Если код непосредственно в обработчик onclick, то это легко. Но что такое всплывающее окно в setTimeout? Попробуйте этот код:
 // open after 3 seconds
setTimeout(() =
0 голосов
от
Одним "решением", которое будет всегда работать вне зависимости от браузера компании, или это просто поставить предупреждение на экране, где-то недалеко от управления, что позволит создать всплывающее окно, что вежливо предупреждает Пользователя о том, что действие требует всплывающее окно и включите их на сайте. Я знаю, что это не люксовский, но это не может быть проще и требует всего около 5 минут тестирования, то вы можете перейти на другие кошмары. После того, как пользователь разрешил всплывающие окна для вашего сайта, было бы также будьте внимательны, если вы не переусердствуйте всплывающих окон. Последняя вещь вы хотите сделать, это раздражать ваших посетителей.
0 голосов
от
Я пробовал много решений, но только один я мог придумать, которые также работали с общими принципами функционирования, был благодаря использованию тайм-аут, чтобы проверить статус "закрыт" из всплывающего окна.
function popup (url, width, height) {
    const left = (window.screen.width / 2) 

Очевидно, что это хак; как и все решения этой проблемы.

Вы должны предоставить достаточно времени в функции setTimeout для учета первоначального открытия и закрытия, так что это никогда не собирается быть досконально точным. Это будет позиция проб и ошибок.

Добавьте это в свой список попыток.
0 голосов
от
Использовать событие onbeforeunload можно проверить следующим образом
    function popup()
    {
        var chk=false;
        var win1=window.open();
        win1.onbeforeunload=()=
0 голосов
от
Я совместил @Кевин Б и решений @DanielB по. Это намного проще.
var isPopupBlockerActivated = function(popupWindow) {
    if (popupWindow) {
        if (/chrome/.test(navigator.userAgent.toLowerCase())) {
            try {
                popupWindow.focus();
            } catch (e) {
                return true;
            }
        } else {
            popupWindow.onload = function() {
                return (popupWindow.innerHeight
...