ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

window.addEventListener(message,()={})中的回调函数无故被一直触发的问题 - broky

window.addEventListener(message,()={})中的回调函数无故被一直触发的问题 - broky

遇到的问题使用第一个进入无痕模式就没有被一直触发的问题了

一、最可能的 3 个 “隐式消息发送源”(非你主动写的代码)

  1. 浏览器插件 / 扩展程序发送的消息
    很多浏览器插件(如广告拦截、翻译、开发者工具插件)会通过 postMessage 向当前页面注入消息(比如传递插件状态、功能指令)。这些消息的 event.origin 通常是插件的域名(如 chrome-extension://xxxx),但部分插件可能会错误地使用当前页面的域名作为 origin,导致主页面的 message 回调被持续触发。
    排查方法:
    打开浏览器的 “无痕模式”(无痕模式默认禁用所有插件),再访问页面;
    如果无痕模式下 message 回调不再持续执行,说明是插件导致的。
  2. 页面中隐藏的第三方脚本(如统计、广告)
    如果你在页面中引入了第三方脚本(比如百度统计、Google Analytics,或无意中嵌入的广告脚本),这些脚本可能会在页面加载时通过 postMessage 发送心跳消息、数据上报消息。这些消息的 event.origin 可能是第三方域名,也可能因脚本跨域加载错误地显示为当前页面域名。
    排查方法:
    临时删除页面中所有非核心的
返回列表