Отображение пользовательского диалога, когда пользователь выходит из браузера? - PullRequest
4 голосов
/ 15 июля 2010

Да, я понимаю, что это ужасный интерфейс и плохая доступность, но я вынужден искать варианты из-за работы по контракту (с которой я изначально не соглашался и застрял).

Я знаю, что вы можете назначить обработчик событий для onbeforeunload, например:

window.onbeforeunload = function() {
    return 'You have unsaved changes!';
}

Это приведет к появлению диалога, сгенерированного ОС / браузером, который не может быть настроен. Вам будет предложено отменить запрос или продолжить.

Пока что кажется, что единственный способ отобразить любую пользовательскую настройку - это вставить window.open в этот обработчик событий:

window.onbeforeunload = function() {
     var x = window.open('modal.html');
}

Скорее всего, это будет заблокировано любым современным браузером как «всплывающее окно». Мне нужно отобразить совершенно новую страницу с моим диалогом, но это, кажется, единственный способ удовлетворить спрос.

Это единственный вариант, который у меня есть? Кроме насильственного предупреждения клиента, что делать это не рекомендуется?

Единственным другим вариантом будет полагаться на пользователя, нажав "Отменить запрос", а затем вставьте диалоговое окно.

Вопросы, которые у меня есть уже просмотрены:

Ответы [ 3 ]

1 голос
/ 18 июля 2010

Я только что прошел маршрут window.open перед загрузкой.

1 голос
/ 15 июля 2010

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

window.onbeforeunload - MDC

0 голосов
/ 15 июля 2010

вы можете использовать скрытый Flash .swf, который вы открываете во время загрузки, вместо window.open

...