navigator.sendBeacon не вызывается при выгрузке

Согласно MDN и спецификациям, navigator.sendBeacon предназначен для вызова из окна выгрузки. Теперь кажется, что это больше не работает, если вы закроете последнюю вкладку браузера или все окно браузера.

Может ли кто-нибудь подтвердить, если это по дизайну? Если да, есть ли обходной путь для отправки последних данных при выгрузке?

Я тестировал этот образец файла в Firefox 74 и Chrome 81, ища вызовы с помощью Fiddler.

<html>
<head>
<title>unload test page</title>
<script>
window.addEventListener("unload", function () {
  navigator.sendBeacon('https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon');
});
</script>   
</head>
<body>
    <p><div>unload test page</div></p>
</body>
</html>

person Casper    schedule 19.03.2020    source источник


Ответы (1)


MDN заявляет (по состоянию на 12.01.2021):

Он предназначен для использования в сочетании с событием visibilitychange (но не с событиями unload и beforeunload).

Когда видимость изменяется на скрытую, вы можете рассматривать это как закрытие вкладки/браузера и использовать sendBeacon.

person Jonathan    schedule 12.01.2021