Это возможно это может отличаться от браузера, но, вероятно, нет. Консенсус (см. Ниже), по-видимому, заключается в том, что сценарий, кажется, завершается или, по крайней мере, дает несколько секунд для завершения; как только он (или через некоторый период времени, в любом случае), браузер закрывает вкладку.
Вы можете довольно легко протестировать это в современных браузерах, заняв ожидание и посмотреть, что происходит, когда вы пытаетесь закрыть браузер во время оживленного ожидания.
Например, рассмотрим эту страницу:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
<style>
html, body {
margin: 0;
padding: 0;
}
</style>
<body>
<p>I'm here</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var d = Date.now() + 10000;
while (Date.now() < d) {
}
</script>
</body>
</html>
Chrome: Показывает «Я здесь», и при нажатии на кнопку закрытия вкладки, он не закрывается в течение нескольких секунд (похоже, цикл завершает). (Если он не закончил, шансы Chrome в конечном итоге сказать вам сценарий был плохо себя.)
Firefox: Не показывать «Я здесь», но интерфейс делает то же самое: Не близко вкладку в течение нескольких секунд после запроса закрытия табуляции.
IE11: Может или не показывать «Я здесь», нажатие кнопки «закрыть вкладку» кажется более быстрым (но все же через несколько секунд), чем Chrome.
Похоже, что это довольно легко идти щелчок в перед тем сценарий начинается, так что вам придется подождать некоторое время после загрузки страницы, прежде чем нажать на кнопку закрытия.
Не могли бы вы поставить предупреждение перед закрытием '' и обновить результаты, если они будут показаны до закрытия вкладки? – mudasobwa
Я думаю, что причиной такого поведения является вся вкладка, например, выполнение Javascript, однопоточность. Событие «закрыть вкладку» не завершено до тех пор, пока выполнение js не будет завершено. –
@mudasobwa: 'alert' делает белки в браузерах, а белки меняются от браузера к браузеру. Я бы не удивился, например, если цикл завершен, мы вызываем «alert», браузер приостанавливает поток JavaScript (потому что «alert» является странным и блокирующим), а затем обрабатывает событие close - на некоторых браузерами, делая что-то другое на других. В частности, при закрытии окон помните, что сайты с нечеткими сайтами используются для использования «предупреждения» и т. Д., Чтобы захватить ваш браузер и не дать вам уйти, поэтому браузеры активны вокруг него. –