🐛 马德里扩展 bug 可视化解释

朋友报的"自动勾选要点好几次才成功",本质就是下面这个故事。两个场景都点几下,亲手感受一下。

旧版 v1.2.0 为什么"要点好几次才成功"?

想象 5 个国家的勾选框是 5 个柜台。每按一次 🚀 自动勾选,背后就偷偷复印一个工人 — 但前一个工人没消失。 多个工人同时听到"开始干活"指令,一起冲向同一批柜台 — 你勾上、我又取消、他再勾上、你又取消,最终结果完全靠运气。
连续按 2-3 次按钮试试 ⤵️

当前工人: 0
点按钮试试 — checkbox 会跳来跳去,最后状态不可预测
新版 v1.2.1 门口加了个保安

新版在工厂入口加了个 👮 保安。第一个工人放行后,保安立刻贴牌"已有人在干活",之后再来的工人全被赶走。 不管你按几次按钮,永远只有 1 个工人,没有打架。
同样连续按 2-3 次试试 ⤵️

工厂里工人: 0 / 1
⛔ 已有人在干活,请等一下
点按钮试试 — 不管你按几次,每次都是同一个工人重新跑一遍,5 个国家稳稳全勾上

👆 这就是 v1.2.1 的修复

content.js 顶部加了 5 行代码 — Chrome 扩展圈管这个叫"幂等守卫":

if (window.__MADRID_HELPER_INSTALLED__) return;
window.__MADRID_HELPER_INSTALLED__ = true;

"已安装"贴纸贴在 WIPO 页面的 window 对象上。每次扩展尝试注入时第一行先看墙上有没有贴纸 — 没贴 → 贴上 + 干活;已贴 → 直接退回。从此再也不会有"复印工人"问题。

原来的"勾错国家"问题(韩国变朝鲜)是 v1.2.0 修的,是另一个 bug,跟这个无关。