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

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

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

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

появится оповещение.

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

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

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


person Jayapal Chandran    schedule 17.06.2011    source источник
comment
Ну, насколько я знаю, это невозможно. Хотя, если вы поделитесь причиной, по которой вам это нужно, то же самое можно было бы выполнить с помощью лучшего решения.   -  person mihsathe    schedule 17.06.2011
comment
Кхм? 2 и 3 не имеют смысла. Предупреждать, когда пользователь нажимает кнопку обновления на панели инструментов браузера, но НЕ предупреждать, когда пользователь нажимает кнопку обновления панели инструментов браузера... ???   -  person mplungjan    schedule 17.06.2011
comment
^ Ну, все, что он имеет в виду, это то, что он хочет, чтобы оповещение появлялось во всех случаях выгрузки, кроме нажатия кнопки обновления. Хотя язык сбивает с толку.   -  person mihsathe    schedule 17.06.2011
comment
Я отредактировал ваш вопрос - дайте мне знать, правильно ли я его сформулировал   -  person mplungjan    schedule 17.06.2011


Ответы (1)


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

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

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

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, опера 11, опера 10, сафари 3,4,5.

person Omeriko    schedule 17.06.2011