Модальное всплывающее окно при выходе из окна - PullRequest
0 голосов
/ 14 февраля 2012

Попытка выяснить, как сделать модальное всплывающее окно при выходе из браузера. Я знаю, как создать окно оповещения, но я хочу, чтобы при ответе пользователи отвечали на вопросник, а не на базовое окно «Вы уверены, что хотите покинуть».

Ответы [ 4 ]

1 голос
/ 24 сентября 2014

У меня были похожие требования, когда я хотел использовать красивое HTML-сообщение вместо стандартного js-сообщения.Потратив некоторое время, я наконец нашел способ сделать это.Я использовал jQuery Colorbox модальный, который очень полезен в любых модальных требованиях, не только здесь.

В основном вы можете использовать mousemove событие и найти, если координата Y (e.clientY) равнаменьше 5. Так что он будет срабатывать каждый раз, когда мышь находится рядом с адресной строкой (пользователь вводит новый URL или пытается закрыть окно).

jQuery(document).ready(function() {
jQuery(document).mousemove(function(e) {
    if (e.clientY <= 5) {
        jQuery.colorbox({initialHeight: 250, initialWidth: 250, html:'<h2>any custom HTML here</h2><br/><img src="nice-img" />'});
    }
});

});

Я нашел многоНапример, используя e.pageY, но обратите внимание, что он будет запущен только в том случае, если пользователь не прокрутил вниз.Так что, если вы прокрутите вниз даже на 5 пикселей, e.pageY не будет работать, но e.clientY будет работать.e.pageY дает смещение, а e.clientY дает абсолютную координату.Очень важно!

1 голос
/ 14 февраля 2012

Хотя не всегда рекомендуется вводить код при выходе, вы можете сделать что-то вроде этого:

<body onUnload="javascript:openDialog()">

или

$(document).bind('unload', openDialog);

Тогда:

function openDialog(e) {
    e.preventDefault();
    $("#yourQuestionnaire").dialog('open');
}

Но, как правило, рекомендуется избегать привязки к событию onUnload, поскольку его запуск не надежен во всех браузерах и ситуациях.

ОБНОВЛЕНИЕ

Документация показывает это как:

$(window).unload(function() {
  alert('Handler for .unload() called.');
});

Это работает для меня, когда я применяю его через консоль Firefox / Firebug на любой странице Stackoverflow.

Документация здесь: http://api.jquery.com/unload/

1 голос
/ 14 февраля 2012
window.onbeforeunload = function () {
  return 'Your content has not been properly saved yet!';
};

Это заставит браузер отображать окно подтверждения, подобное этому:

http://f.cl.ly/items/2L0t1k0d2U0p0Z0z1d2t/Screen%20shot%202012-02-14%20at%206.09.58%20PM.png

Как видите, строка, возвращаемая функцией, отображается в окне.

1 голос
/ 14 февраля 2012

Вы не можете.Единственный способ остановить закрытие окна - использовать JS Confirm (или оповещение).Если бы вы просто открыли модальную страницу, окно все равно закрылось бы, и вы бы его никогда не увидели.Лучше всего открыть оповещение JS, а затем перенаправить страницу на вопрос.Обратите внимание, что это невероятно раздражает пользователя.

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