Window.onbeforeunload не устанавливается после обновления страницы

Я делаю отчет об ошибках, который фиксирует ошибки, а затем непосредственно перед тем, как пользователь обновляет/закрывает, он отправляет ошибки на сервер для помещения в файл журнала. У меня есть функция window.onerror, которая фиксирует ошибки и сохраняет их в массиве. Внутри функции window.onerror я также устанавливаю window.onbeforeunload, который будет запрашивать данные сетевого запроса от работника службы (который ведет запись сетевых журналов загрузки этой страницы). Когда ctrl-f3 (на хромбуке, эквивалентно ctrl-f5 в Windows), попробуйте перезагрузить его, он запросит подтверждение для обновления страницы. Если я это сделаю, попробуйте обновить его снова, всплывающее окно не будет отображаться. Я сделал некоторую отладку, чтобы увидеть, что window.onbeforeunload в то время не было. На самом деле часть моего кода (приведенная ниже) не выполняется! Я помещаю скрипт сообщения об ошибках в виде внешнего файла и загружаю его в тег <head> моей HTML-страницы. Он обернут вокруг анонимной функции без прослушивателя загрузки. Почему это не работает? Я не могу обдумать решение, поэтому я с радостью приму помощь. Спасибо.

О, чуть не забыл! Вот мой код (сокращенный до точек, имеющих отношение к вопросу):

window.onerror = function(eventOrMessage, url, lineNumber, colNumber, error){
    window.onbeforeunload = function(){
      const channel = new BroadcastChannel("net-log");
      channel.postMessage({requestLog:true});
      channel.addEventListener("message",function(event){
        if (event.data.encodedLogEntries){
          console.info(event.data.encodedLogEntries);
        }
      });
      return "Sending messages";
    };
    //works the first time, then doesn't set. Actually, the second time it doesn't execute this at all!
    console.info(window.onbeforeunload);
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме