предупреждение javascript на window.unload, когда браузер закрыт, но не должно предупреждать, когда браузер обновляется - PullRequest
0 голосов
/ 17 июня 2011

Я хочу получить сообщение в событии window.onunload.

В настоящее время, когда пользователь

a) уходит
b) закрывает окно
c) нажимает F5 или
d) нажимает кнопку обновления на панели инструментов браузера

появляется предупреждение.

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

Мы добавили условия, чтобы не предупреждать, когда пользователь нажимает клавишу F5 или уходит, но предупреждение также не должно появляться, когда пользователь нажимает кнопку обновления браузера.

Любой тип обходных путей был бы неплох.

1 Ответ

0 голосов
/ 17 июня 2011

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

Чтобы узнать, нажал ли пользователь кнопку браузера, выполните следующие действия: 1. Зарегистрируйте событие window.beforeunload. 2. В обработчике проверьте event.clientY. 3. Если event.clientY не является defiend или event.clientY <0, то вы знаете, что пользователь нажал кнопку браузера. </p>

Например:
(Вам, вероятно, придется изменить код, чтобы он соответствовал вашей проблеме)

function beforeUnloadHandler(eventArg)
{
   var _e = window.event || eventArg;

   // browser button click
   if (isNaN(_e.clientY) || _e.clientY < 0) 
   {
       // unload process will continue
       // and unload event will be fired
       return;
   }

   // a confirmation with 'test alert' text will appear
   // if the user clicks 'Cancel', the unload process will stop 
   // and unload event won't be fired.
   return "test alert";
}
window.onbeforeunload = beforeUnloadHandler;

Этот код будет работать во всех основных браузерах: chrome, ff, ie9, ie8, ie7, ie6, opera 11, opera 10, safari 3,4,5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...