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