繁体   English   中英

Window.onbeforeunload 页面刷新后未设置

[英]Window.onbeforeunload not setting after page refresh

我正在制作一个捕获错误的错误报告器,然后就在用户刷新/关闭之前,它将错误发送到服务器以放入日志文件中。 我有一个window.onerror function 捕获错误并将其存储在数组中。 window.onerror function 中,我还设置了 window.onbeforeunload,它将向 service worker 发送请求 .network 请求数据(它会记录来自该页面加载的 .network 日志)。 当 ctrl-f3(在 chromebook 上,相当于 ctrl-f5 在 windows 上)时,然后尝试重新加载它会要求确认刷新页面。 如果我这样做,然后尝试再次刷新它,它不会显示弹出窗口。 我做了一些调试,看到当时的window.onbeforeunload不存在。 事实上,我的部分代码(在下面发布)没有执行! 我将错误报告脚本作为外部文件加载到我的 HTML 页面的<head>标记中。 它包裹在匿名 function 周围,没有 onload 侦听器。 为什么这不起作用? 我无法全神贯注于解决方案,所以我很乐意接受帮助。 谢谢。

哦,差点忘了:这是我的代码(缩写为与问题相关的要点):

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.log(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.log(window.onbeforeunload);
}

我发现了问题,由于某种原因,这是我的服务人员的一个错误,导致了困境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM