Как можно определить, что нажата кнопка закрытия браузера?Есть ли способ определить, что окно браузера закрыто?
ответ
Браузеры не имеют близкое событие, так что вы не можете сказать, когда пользователь закрывает свой браузер, есть некоторые потенциальные обходные пути в This thread
Если вы сообщите нам, что вы пытаетесь достичь, есть может быть альтернативным способом
бы это:
$(window).unload(function() { alert("Bye now!"); });
помочь?
В то же время в jQuery.
вы должны проверить the link given by Demoli, хотя он имеет дополнительную информацию об этом конкретном методе (и его недостатке).
Редактировать: добавлена ссылка.
С JavaScript Event Reference ближайшим совпадением является событие OnUnload. Однако это также улавливает навигацию от страницы (и, следовательно, вы не хотите, чтобы функции запускались, если пользователь нажимает на ссылку.)
Нет гарантии, что сервер получит сообщение о том, что браузер окно закрыто. Например, более старый метод, который включал создание небольшого всплывающего окна, был бы заблокирован большинством современных браузеров. Использование AJAX может работать, но окно браузера может закрыться перед попыткой подключения.
Как правило, происходит событие, когда пользователь покидает страницу (выгружает?) - это может быть конкретный браузер.
Существует также свойство window.closed, которое устанавливается на объект окна после закрытия связанного с ним окна. Обычно это используется, когда у вас есть ссылка на всплывающее окно.
Я не уверен, будет ли событие выгрузки уволено до или после того, как будет установлено свойство «закрыто» - вам придется экспериментировать.
Возможно, вы не можете различать закрытое окно и браузер, перешедший на другой сайт.
вы можете настроить ajax-вызов, который периодически обзывает ваш сервер каждые несколько секунд каждые несколько минут (в зависимости от вашей требуемой точности времени) и отслеживает последнюю сторону сервера времени. не вполне точно (например, проблемы с сетью могут привести к ложному срабатыванию), но может быть вариантом в зависимости от ваших требований.
Вы должны использовать onbeforeunload
, а не onunload
. IE 7 (и, возможно, другие браузеры) не на 100% надежны, когда дело доходит до запуска события unload
, но, похоже, он всегда запускает событие beforeunload
.
, например, window.onbeforeunload=function(){}
или, если вы используете prototype.js: Event.observe(window, 'beforeunload', function(){});
Я согласен с northsouthwhat, но имейте в виду, что onbeforeunload может не поддерживаться во всех браузерах вы можете захотеть использовать это внутри.
Это хак, но, похоже, он работает для меня. Это может быть и IE. Я кодирую только среду IE.
<body onunload="if(self.screenTop>9000){unloadFunction();}">
Отредактировано для добавления, что моя функция unloadFunction открывает всплывающее окно, которое убивает сеанс пользователя. Вы не можете ничего сделать на странице, которая была закрыта сама. потому что он уже закрыт! ;)
- 1. Есть ли способ определить, закрыто ли окно браузера?
- 2. Есть ли способ определить, видимо ли окно браузера пользователю?
- 3. Проверить окно браузера закрыто
- 4. OpenCV Python: как определить, закрыто ли окно?
- 5. Есть ли способ NSView узнать, когда его окно закрыто?
- 6. Есть ли способ определить, что соединение управляется?
- 7. Внесите изменения в окно браузера, когда другое окно закрыто.
- 8. Как определить, когда окно выбора закрыто?
- 9. Есть ли надежный способ определить, является ли вкладка или окно браузера неактивной или не в фокусе?
- 10. Есть ли способ увидеть, что окно браузера минимизируется, когда пользователь переключается в другое окно на iphone?
- 11. Есть ли способ открыть всплывающее окно браузера CLOSE?
- 12. Как определить, открыто ли окно инспектора браузера?
- 13. Как определить, открылось ли окно браузера из другого окна браузера?
- 14. Есть ли способ узнать, закрыто ли родительское окно или нет в представлении django?
- 15. Как определить, было ли закрыто окно google auth2.signIn() пользователем?
- 16. Как определить, закрыто ли дочернее окно в javascript?
- 17. Есть ли способ обнаружить всплывающее окно для расширения Chrome до того, как всплывающее окно закрыто?
- 18. Есть ли способ определить, на каком мониторе находится окно?
- 19. Есть ли способ определить, является ли окно браузера всплывающим окном или просто новое окно с использованием target = "_ blank"?
- 20. Есть ли событие, когда всплывающее окно расширения Chrome закрыто?
- 21. Как определить, что соединение SSE было закрыто?
- 22. Окно обнаружения закрыто
- 23. Определите, как всплывающее окно закрыто
- 24. Определить, существует ли окно по имени
- 25. Использование RabbitMQ (клиент Java), есть ли способ определить, закрыто ли сетевое соединение во время потребления?
- 26. Есть ли способ определить, заблокирован ли объект?
- 27. Есть ли способ определить, переопределена ли функция?
- 28. Есть ли способ определить, отключена ли анимация
- 29. Возможно ли родительское окно заметить, закрыто ли дочернее окно?
- 30. Определить, как приложение закрыто.
AFAICT это работает только в IE6. – 2009-10-05 05:05:29