Null Is Not Zero: 构建承认其限制的 JavaScript SIO 审计

2026年8月16日3 次浏览来源:Dev.to阅读原文

我们把服务器侧的SEO引擎 移入了Chrome扩展 测量页面是容易的。

说出我们无法衡量的是困难的一半。

我们多年来一直在自己的服务器上运行一个网页分析引擎。

你给它一个URL,它获取页面,它报告。

寻常.

然后我们把引擎移入浏览器, 因为服务器无法到达, 中转箱,内联网, 或任何登录后。

浏览器可以。

移植分析是机械工作。

真正需要的是服务器上几乎不存在的一类问题:在一个活的标签中,你想要测量的东西有一半有时是没有的,诚实的答案不是数字.

这篇文章是关于从中产生的决定, 以及执行这些决定的代码。

One rule: Null is not Zero Every generation in the engine return, 两者意味着不同的事物.

意味着我们测到它,它是零。

没有布局变化的一页真的得分为零.

意味着我们无法测量它。

还没有发生交互,浏览器不支持该条目类型,或者文档来自另一个来源,大小字段被去除.

无效归属处的0是编造的编号。

这比空格还糟糕,因为读者除了真正的衡量之外,别无选择。

所以两者从不崩溃: 衍生物使它们分开,而UI使它们不同.

这听起来很明显写下来。

这令人惊讶地很容易被违反,下一节是最常见的方式。

表演观察员沉默不语,所以先问一下 这是陷阱。

使用该浏览器不支持的条目类型调用 。

它没有警告。

它静悄悄地无所事事, 你的处理者根本就没有被召唤。

这意味着一个没有支持的测量结果与测量的零完全相同。

以上规则禁止的一件事。

问题在于在观察前先问,然后记录拒绝:

分享