页面里三个区块的 CSS ID 都填了 heading,目录点击第二、第三条还是滚到第一个标题,地址栏的 #heading 完全一样,手动改第三个才好。乍看像缓存或者权限的锅,追下去往往不是。

document.querySelectorAll('[id]').forEach(el => {
  if (document.querySelectorAll('#' + CSS.escape(el.id)).length > 1)
    console.log('重复', el.id);
});

追下去是这么回事:构建器的 CSS ID 输入框不校验唯一性,复制区块时 ID 一起被复制过去。浏览器按文档顺序找第一个匹配的 id,后面的同名元素永远不会被定位到。

碰到「Elementor 锚点重复」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,在页面结构里搜一遍重复的 CSS ID;按区块内容改成 heading-price、heading-faq 这类唯一值;目录链接同步改,改完逐个点一遍确认。

验收就看一点,三个目录项分别滚到对应区块,地址栏的锚点各不相同。

作者 9823189