#javascript #jquery #javascript-events #dialog
#javascript #jquery #диалоговое #jquery-события
Вопрос:
Я показываю диалоговое окно с предупреждением о window close
событии. Если пользователь нажимает на Cancel элемент управления остается на той же странице или если пользователь нажимает наOkay, он переходит на нужную страницу.
Я хочу собрать значение диалогового окна, означающее, нажал ли пользователь на Cancel или Okay.Я написал следующий код на внешнем JavaScript:
$(document).ready(function()
{
window.onbeforeunload = askConfirm;
function askConfirm()
{
if (flag)
{
// Message to be displayed in Warning.
return "Your unsaved data will be lost.";
}
}
}
Как я могу собрать значение?
Комментарии:
1. отсутствует); в конце вашего кода
2. Спасибо, Андрей 🙂 Я использовал
Ctrl Shift k
.
Ответ №1:
<script type="text/javascript">
window.onbeforeunload = function (evt) {
return "Are you sure to close?";
}
</script>
пример кода
http://files.dropbox.com/u/642364/blogger/scripts/close.html
РЕДАКТИРОВАТЬ Получение кода ответа от пользователя при закрытии окна
<body onUnload = "CheckIt ()" >
...
</body>
<script>
function CheckIt ()
{
var response = confirm ("Are you closing..");
alert (response); // do whatever for response.
}
</script>
Комментарии:
1. Я использовал тот же код. Теперь я хочу получить значение
Dialog Box
, я хочу знать, нажал ли пользователь наOkay
илиCancel
.2. Если вы хотите получить значения (не отменяя запрос на закрытие), это можно легко сделать с помощью события onUnload формы. Смотрите отредактированный код
3. @Ajay: Спасибо за предложение. Я пробовал, но это в любом случае закрывает окно. Что я хочу сделать, так это то, что если пользователь нажимает на
Okay
окно, оно должно закрываться / перемещаться. Когда пользователь нажимает наCancel
, должно быть выполнено какое-то действие, и элемент управления должен оставаться на той же странице.4. Вам нужно
return
логическое значение, содержащееся вresponse
, которое соответствует параметру, который они нажали в диалоговом окне подтверждения;Okay = true
иCancel = false
. Вероятно, вы также захотите вызвать код дляonbeforeunload
события, а не дляonunload
события.5. @Ajinkya На самом деле я быстро пошел и протестировал это сам, и есть пара проблем. Прежде всего, большинство (вероятно, все — я тестировал только FF4 и IE9) современных браузеров имеют свои собственные диалоги, которые они отображают при наличии обработчика события onbeforeunload, и из небольшого исследования, которое я провел, кажется, нет способа предотвратить это. Если вас устраивают два диалоговых окна, вы можете использовать свое собственное диалоговое окно подтверждения, выполнить некоторую обработку на основе результата, вернуть практически все, что угодно, а затем позволить диалоговому окну браузера по умолчанию выполнять переход с текущей страницы или оставаться на ней.