← 全部文章

API 与辅助工具

写出能在 DOM 变化中存活的 JS 规则

你写了一条规则,它工作了一周,今天停了。页面没坏 —— 它只是把一个类名从 .btn-primary 改成了 .Button_primary_x7f3。下面是如何写出能在这类变化中存活的规则。

规则为什么会坏

一条规则攀附在一个你控制不了的页面的 DOM 上。每次改版、每次带新类名哈希的构建、每次 A/B 测试都可能让你脚下的地动起来。你消灭不了它 —— 但你能限制它。

法则 1 —— 瞄准稳定的东西

选择器从最持久到最不持久:

法则 2 —— 类名失效时用文本瞄准

对用户可见的文本变化得比 CSS 类名少。与其按类名捕获一个按钮,不如按内容找到它:

const btn = [...document.querySelectorAll('button')]
  .find(b => /保存|提交|save|submit/i.test(b.textContent || ''));

法则 3 —— 总是检查元素是否存在

一条假定某个元素存在的规则会在它缺失的那天爆掉 —— 而且常常会把它自己其余的代码一起害死。防御性地写:

const el = document.querySelector('.target');
if (el) {
  // 在这里干活
}

?. 运算符简洁地做到这点:document.querySelector('.target')?.remove() 在元素缺失时什么都不做 —— 而不是抛一个错误。

法则 4 —— 让规则在迷失时喊出来

最糟的故障是无声的 —— 规则不工作而你不知道为什么。加一个信号:

const el = document.querySelector('.target');
if (!el) JUSTZIX.warn('规则 X: 未找到 .target —— 页面变了?');

Output Console 里的一条记录立刻告诉你该修选择器了 —— 而不是靠猜。

另见

安装 JustZix —— 写出不会在页面下次部署时崩坏的规则。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景