如何修复“收到响应前消息端口已关闭”。在 javascript 中的 window.location.reload() 之后

Posted

技术标签:

【中文标题】如何修复“收到响应前消息端口已关闭”。在 javascript 中的 window.location.reload() 之后【英文标题】:How to fix "The message port closed before a response was received." after window.location.reload() in javascript 【发布时间】:2019-08-24 11:10:27 【问题描述】:

我遇到了 javascript 问题,因为 chrome v73.0.3683.86,每当我在 window.location.reload() 函数之后运行我的 javascript 代码时,它总是给我错误“Unchecked runtime.lastError: The message port在收到回复之前关闭。”

我在互联网上搜索了很多主题,但大部分都是关于 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>

【问题讨论】:

For some reason I need to run something after window.location.reload() - 好吧,你的整个设计有缺陷。重新加载页面后,之后的代码就无关紧要了 哦,惊喜! @JaromandaX 我和你的想法完全一样,然后在我的本地主机上尝试 location.reload();navigator.sendBeacon('foo') ,在我的服务器日志上我可以清楚地看到请求已执行。实际上,即使location.reload(); localStorage.executesAfter="true"; 也可以。 @OP,您在运行问题中的代码 sn-p 时是否看到此消息? macOS 上的 73.0.3683.86 在这里,我什么都没有。 @Kaiido - 是的,这行得通......但这不是OP想要做的,他想在卸载页面后更改页面标题? 谢谢大家,但我正在寻找关于“在收到响应之前关闭消息端口”的解释@Jaromanda:是的,设计不好,虽然在 chrome 版本 73 之前它运行良好:( 【参考方案1】:

您可以尝试在没有任何扩展的情况下在 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。

【讨论】:

Anh hữu nói tiếng người điiiiii :v【参考方案2】:

谢谢大家,我发现了问题,这是因为一个扩展尝试通过运行“chrome.runtime.sendMessage”向它的 background.js 发送消息 因此,当我运行 windown.location.onload() 函数时,它会关闭消息端口并抛出错误消息!

问题是无法在我的办公室计算机上禁用扩展程序:))

【讨论】:

以上是关于如何修复“收到响应前消息端口已关闭”。在 javascript 中的 window.location.reload() 之后的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中修复/实现equals方法? [重复]

如何在android java中修复sqliteException

如何修复 Java 中的 OutOfMemory 错误?

如何修复在 Hive 下运行的 geoip2 java 的“java.lang.NoSuchMethodError”

如何修复错误:无法从“11.0.2”确定 java 版本。在特拉维斯?

如何修复错误原因:java.net.BindException:地址已在使用:在 Quarkus 中绑定?