JavaScript + событие onunload - PullRequest
       9

JavaScript + событие onunload

0 голосов
/ 10 августа 2009

Я хочу запустить событие onunload для выполнения некоторых операций очистки, у меня есть несколько вкладок (Navbar), показывающих несколько ссылок на разные веб-страницы, моя проблема в том, что даже когда я нахожусь на другой странице, моя функция выгрузки, которая находится в тег какой-то другой JSP запущен. Пожалуйста, помогите восстановить это, я хочу, чтобы функция unload вызывалась, когда пользователь закрывает браузер на этой странице.

Ответы [ 3 ]

3 голосов
/ 10 августа 2009

Я не уверен, как вы заставили событие onunload работать .... Проблема, которую я обнаружил при использовании события onunload, заключается в том, что оно запускается после выгрузки страницы. Это означает, что JavaScript больше не может быть выполнен, потому что страница была выгружена.

Вы должны использовать событие onbeforeunload. Это событие немного уникально, потому что если функция, которая обрабатывает это событие, возвращает что-либо, всплывающее окно отображается с вопросом, хотят ли они продолжить операцию. Итак, в вашем случае убедитесь, что ваша функция ничего не возвращает. Еще одна вещь, которую следует отметить в отношении события onbeforeunload, - это то, что в настоящее время Opera не поддерживает его (хотя Safari, FireFox и Internet Explorer поддерживают).

Оба события onbeforeunload и onunload выполняются каждый раз, когда страница выгружается. Если элемент управления на вашей странице отправляет страницу в код сервера, страница выгружается и выполняется JavaScript.

Если вы не хотите, чтобы JavaScript выполнялся, когда элемент управления на вашей странице отправляет его на сервер, вы должны реализовать нечто, проверяющее, должен ли ваш код выполняться.

Это просто, добавьте логическое значение JavaScript на страницу и функцию, которая установит для этого логического значения значение true. Убедитесь, что каждый элемент на вашей странице, который отправляет обратно на ваш серверный код, устанавливает для этого логического значения значение true, прежде чем он отправит страницу. Проверьте это логическое значение в вашем событии onbeforeunload, чтобы увидеть, должен ли выполняться ваш код очистки.

Надеюсь, это поможет,

-Frinny

0 голосов
/ 09 марта 2010

У вас есть страница с фреймами? И вы хотите получать уведомления, когда они уходят от фрейма? Добавьте onbeforeunload в набор фреймов. Я не знаю, что вы имеете в виду под очисткой, но вы не можете безопасно отправлять XHR во время выгрузки через браузеры

0 голосов
/ 10 августа 2009

Кажется, что функция выгрузки была создана в глобальной области видимости. Попробуйте разместить эту функцию только на той странице, на которую хотите действовать.

...