Javascript onbeforeunload функция - PullRequest
1 голос
/ 02 июня 2011

Люди, я пытаюсь вызвать эту функцию подтверждения при событии onbeforeunload, но она не вызывается.Что мне здесь не хватает?Я называю это внутри тега body: <body onbeforeunload="confirmation();">Я также попробовал: <body onbeforeunload="return confirmation();">

код:

  function confirmation(){
  var answer = confirm('You have unsaved changes!!');
   if(answer == true)
    {
     alert('Bye Bye!!!');
    }
    else{
      alert('You are staying');
     return false;
    }
   }

Ответы [ 2 ]

5 голосов
/ 02 июня 2011

Это не так, как работает onbeforeunload, а код содержит синтаксические ошибки.

window.onbeforeunload = function (e)
{
    var e = e || window.event,
        message = 'You have unsaved changes!!';

    // For IE and Firefox prior to version 4
    if (e)
    {
        e.returnValue = message;
    }

    return message;
}
3 голосов
/ 03 июня 2011

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

Если это так, то это представляется возможным . Попробуйте следующее на SO. Начните писать ответ на этот вопрос, а затем попробуйте закрыть окно браузера.

Я тестировал в Chrome 12, FF 4.0.1 и IE 9.
Все 3 браузера показывают всплывающее окно . Кажется, все они содержат пользовательский текст . Chrome показывает сообщение cleanest , что означает всплывающее окно только с пользовательским сообщением и 2 кнопками.
Во всех трех браузерах, пытающихся закрыть браузер любым обычным способом, запускается всплывающее окно, которое позволяет пользователю выбрать, не хочет ли он остаться на странице и завершить начатое. Если он хочет уйти, он может. (уничтожение процесса браузера или выключение компьютера может не дать желаемого результата :)).

Internet Explorer:
enter image description here

Firefox:
enter image description here

Chrome:
enter image description here

Я бы попробовал предложить функцию, которая возвращает строку в событие window.onbeforeunload. Попробуйте это :

<script>
window.onbeforeunload = function (evt) {
  var message = 'You have started writing or editing a post.';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...