如何判断是啥启动了页面刷新?

Posted

技术标签:

【中文标题】如何判断是啥启动了页面刷新?【英文标题】:How can I tell what initiated a page refresh?如何判断是什么启动了页面刷新? 【发布时间】:2021-10-22 02:57:20 【问题描述】:

我有一个使用 websocket (io) 与后端通信的 web 应用程序。 (它使用 Underscore 和 JQuery,但没有什么比 React 更高级的了。)在 Safari 中,页面每隔几分钟刷新一次。

我怎么知道是什么导致了这种情况发生?在 Developer Tools Network 选项卡中,我看到了一个 xhr 和其他请求,但我如何查看是哪一行 javascript 发起了该请求?

在调试器中停止beforeunload 事件不会在调用堆栈中显示任何内容。

【问题讨论】:

您在标签页中找到initiator 列了吗? window.addEventListener("beforeunload", function() debugger; , false) 不是真正的骗子,但答案(除了接受的答案)可能会有所帮助:How to use Chrome's network debugger with redirects 更好的欺骗候选人:Debug webpage redirects in browser @ikvjs 我在哪里可以看到这个标签?请注意屏幕截图——我在那里看不到它 【参考方案1】:

“网络”选项卡中有 initiator 列。您可以看到启动网络的原因。

注意:Chrome 版本 92.0.4515.159(官方版本)(64 位)

【讨论】:

谢谢。在 Safari 中,我必须启用该列——现在我拥有它。 Initiator 列显示 socket.io 正在重新加载。特定的文件名 + 行号显然不正确(同时查看最小化文件和原始文件)但现在我假设 - 没有太多证据 - 这个问题是 Safari 特有的,并且 Safari 有一些限制阻止 websockets以正常方式工作,以便在超时后回退到整个页面加载。

以上是关于如何判断是啥启动了页面刷新?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 如何防止页面的刷新

如何判断用户是关闭浏览器标签还是刷新页面

如何在页面关闭或刷新时触发javascript事件

VUE+NUXT项目页面刷新报错问题解决方式

尽管页面刷新,如何保持计数器倒计时?

php如何避免刷新页面重复提交