Как собрать значение диалогового окна

#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, и из небольшого исследования, которое я провел, кажется, нет способа предотвратить это. Если вас устраивают два диалоговых окна, вы можете использовать свое собственное диалоговое окно подтверждения, выполнить некоторую обработку на основе результата, вернуть практически все, что угодно, а затем позволить диалоговому окну браузера по умолчанию выполнять переход с текущей страницы или оставаться на ней.