Пользовательское окно подтверждения, имеющее некоторую функциональность с событием закрытия окна - PullRequest
1 голос
/ 23 февраля 2012

Я сейчас пишу JavaScript, при нажатии на кнопку закрытия в окне, я должен получить окно подтверждения.В окне подтверждения я должен отобразить какое-то сообщение, и должны быть кнопки отмены и продолжения.

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

Может кто-нибудь помочь мне с этим кодом?Я попытался использовать настраиваемое поле подтверждения, но оно, похоже, возвращает только строку, и ее нельзя использовать для перенаправления на страницу.

Ответы [ 3 ]

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

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

Чтобы отобразить окно подтверждения при закрытии окна, вы можете использовать событие onbeforeunload.Это спросит пользователя, хочет ли он покинуть страницу или нет.Окно подтверждения отображается браузером, все, что вы можете настроить, это текст.

$(window).bind('beforeunload', function(){
  return 'Are you sure you want to leave?';
});

Когда пользователь покидает страницу, вы можете использовать событие onunload, но, опять же, вы не можете перенаправить их(вы можете сделать вызов AJAX, но не можете перенаправить браузер).

$(window).bind('unload', function(){
  console.log('bye'); // Some browsers may block this.
                      // Chrome blocks alerts in this event.
});
0 голосов
/ 23 февраля 2012

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

var myFunction = function () {
    return "Are you sure you want to leave the page?";
};

window.onbeforeunload = myFunction;

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

0 голосов
/ 23 февраля 2012

проверьте этот пример, он может вам помочь

function setConfirmUnload(on){
   window.onbeforeunload = (on) ? unloadMessage : null;
}

function unloadMessage(){
   return "Are you sure you want to leave this page";
}

setConfirmUnload(true) для включения подтверждения или false, если вы хотите разрешить им закрывать экран без предупреждения (например, если у вас есть кнопка закрытия).

Вы также можете попробовать это (ссылка: http://api.jquery.com/unload/)

$(window).unload(function(){
   alert("Bye now!");
}); 
...