提问人:nguyen xuan linh 提问时间:4/3/2019 更新时间:11/17/2023 访问量:10038
如何在 javascript 中 window.location.reload() 之后修复“消息端口在收到响应之前关闭”
How to fix "The message port closed before a response was received." after window.location.reload() in javascript
问:
自从 chrome v73.0.3683.86 以来,我遇到了 javascript 问题,每当我在 window.location.reload() 函数之后运行我的 javascript 代码时,它总是给我错误“未经检查的 runtime.lastError:消息端口在收到响应之前关闭。
我在互联网上搜索了很多主题,但其中大部分是关于 chrome 扩展的。所以我尝试在 cognito 模式下运行此代码并禁用所有扩展,但没有更改。
※由于某种原因,我需要在window.location.reload()之后运行一些东西
onClick javascript 函数,如下所示
<html>
<head>
<title>Hello world!</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript">
function buttonClick() {
window.location.reload();
document.title = "Hi there";
}
</script>
</head>
<body>
<div>TODO write content</div>
<button onclick="buttonClick()">Click here</button>
</body>
</html>
答:
您可以尝试在没有任何扩展名的情况下在 chrome 上运行它吗? - 右键单击您的 Chrome 快捷方式 - 选择属性。 - 添加到目标字段的末尾 --disable-extensions --disable-plugins
它如下所示:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" /high-dpi-support=1 /force-device-scale-factor=1 --disable-extensions --disable-plugins
- 单击“确定”
- 启动 Chrome。
谢谢大家,我发现了问题所在,这是因为扩展尝试通过运行“chrome.runtime.sendMessage”将消息发送到它的后台 .js 因此,当我运行windown.location.onload()函数时,它会关闭消息端口并抛出错误消息!
问题是无法在我的办公室计算机上禁用扩展:))
停用您在 Chrome 浏览器上安装的所有扩展程序。这对我有用,我看到很多人都说它有效。
希望这也对你有用。
如果无法禁用扩展程序,则可以在控制台中隐藏错误消息。 转到控制台并取消选中过滤器后面的“自定义级别”下的“错误”。请参阅屏幕截图。
评论
好吧,这个有点不同,与 OP 中的问题不完全相关。但是,如果您在单击按钮时遇到问题,那么这里有一个提醒。
<button type="button"></button>
如果您将按钮包装在表单元素中,则可能会发生这种情况。表单元素中按钮的默认行为是“submit”。因此,如果按钮未尝试提交表单数据,请将其更改为“按钮”。
评论
For some reason I need to run something after window.location.reload()
- 好吧,你的整个设计是有缺陷的。重新加载页面后,之后的代码就无关紧要了location.reload(); localStorage.executesAfter="true";