【问题标题】:Window.onbeforeunload not setting after page refreshWindow.onbeforeunload 页面刷新后未设置
【发布时间】:2020-12-22 17:27:17
【问题描述】:

我正在制作一个捕获错误的错误报告器,然后在用户刷新/关闭之前,它会将错误发送到服务器以放入日志文件中。我有一个window.onerror 函数来捕获错误并将其存储在一个数组中。在window.onerror 函数中,我还设置了window.onbeforeunload,它将向服务工作者发送网络请求数据请求(它会记录该页面加载的网络日志)。当 ctrl-f3 (在 chromebook 上,相当于 windows 上的 ctrl-f5),然后尝试重新加载它会要求确认刷新页面。如果我这样做了,请尝试再次刷新它,它不会显示弹出窗口。我做了一些调试,发现当时的window.onbeforeunload 不存在。事实上,我的代码部分(在下面发布)没有执行!我将错误报告脚本作为外部文件放入我的 HTML 页面的<head> 标记中。它围绕着一个匿名函数,没有 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);
}

【问题讨论】:

    标签: javascript onbeforeunload


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2015-03-21
      • 2018-05-07
      相关资源
      最近更新 更多