如何在load事件触发前打破window.location.reload()页面刷新循环?
如何打破页面load事件触发前的
window.location.reload()刷新循环? 我碰到一个网站,会在load事件触发前就调用window.location.reload(),导致页面陷入无限刷新循环。想知道作为用户有没有办法打破这个循环?最好是不影响网站正常使用的方案。
我尝试过的方法
- 通过Greasemonkey替换
window.location.reload:由于window.location是只读属性,无法替换该方法,此方案失败。 - 通过Greasemonkey监听
window.onbeforeunload并选择取消:刷新调用发生在文档加载完成前,缺少transient activation,beforeunload事件不会触发,无法弹出取消提示,没用。 - 阻止JavaScript(或所有网络请求):确实能停止刷新,但网站也彻底无法正常使用,不是理想方案。
- 通过开发者工具阻止包含刷新调用的特定文件请求:该文件是Webpack打包的主文件,包含网站大部分功能,阻止后网站同样无法运行,不行。
- 通过Greasemonkey注入用户脚本替换调用
window.location.reload()的函数:目标网站用Webpack的IIFE加载所有函数,目标函数作为回调传递后难以修改,而且这种方法不具备通用性,失败。 - 通过开发者工具在
window.location.reload调用处设置断点,修改局部函数提前抛出错误:至少在Firefox里无效,比如执行(function() {throw new Error(), window.location.reload()})()时,逗号运算符会导致即便抛出错误仍会执行刷新,而Webpack打包的代码多为逗号分隔语句,无法避免,且该方法也不通用。 - 通过Greasemonkey手动修改全局Webpack的
window.webpackChunk_N_E表:不确定现代Webpack是否支持这种操作,尝试将目标方法替换为()=>{}但没效果,推测该方法已作为回调传递,修改全局引用无法生效。 - 关闭标签页:最后只能放弃。
有没有什么我漏掉的可行方法?或者说,在浏览器中(除禁用JavaScript外),这种在load事件前触发的刷新循环本质上就无法打破?
内容的提问来源于stack exchange,提问作者kalanchloe
相关产品推荐
相关产品推荐

