SEO 百科
脚本错误
本页目录
脚本错误
脚本错误指页面上的一段 JavaScript 代码在执行时出错[1],出错的那段脚本会停止运行。做 SEO 的人要留意它,因为由脚本生成的内容会跟着一起消失。爬虫执行脚本时遇到同样的错误,看到的就是半张页面。
报错与脚本中止
JavaScript 按顺序逐句执行。某一句抛出异常又没有人接住,这一段脚本就不再往下走[1]。异常指脚本运行中出现的意外情况,例如读取不存在的变量、调用不存在的方法,或者请求失败没有处理。
接住异常要用 try...catch。try 包住可能出错的代码,catch 接收抛出的错误对象[1]。没有这层保护,一次报错就会带走后面的逻辑。
try {
renderProducts(products);
} catch (error) {
console.error(error);
}
这段代码里,renderProducts 出错时,catch 会接住它。没有 catch,错误会一直抛到顶层。
内容的消失
脚本出错的位置决定了损失多少。如果它排在渲染正文之前,正文就写不进页面。后面还有联动逻辑,例如分页、筛选和图片替换,也会一起停在原地。
对访客来说,结果是页面某一块空白。对爬虫来说,结果是渲染后的 HTML 里没有这块内容。源码里本来也没有,索引里自然也没有。
正文是脚本的产物,脚本本身不会被当成正文收录。产物没出现,索引里就少一块。
与抓取和收录的关系
抓取是收录的第一步。百度把搜索的工作原理概括为从互联网抓取网页、建立索引数据库、再将索引库中的数据展现给用户[4]。脚本错误不会挡住抓取,它挡的是渲染之后的正文。
搜索引擎执行脚本的环境与访客的浏览器不完全一样。在访客那里能跑的代码,爬虫那里未必跑得通。同一段内容,访客看得到,索引里却没有。
排查的办法
用 Search Console 的网址检查工具,能看渲染后的 HTML 和脚本报错。Google 建议用它查看已加载的资源、JavaScript 控制台输出和异常,以及渲染后的 DOM[3]。
生产环境的报错要主动收集。Google 建议收集两类错误,一类来自访客,一类来自 Googlebot,用它们发现影响渲染的问题[3]。做法是监听全局的 error 事件。MDN 说明,当资源加载失败或无法使用时,会在 Window 对象上触发 error 事件[2]。
window.addEventListener("error", (e) => {
report(`${e.message} @ ${e.filename}:${e.lineno}`);
});
这段代码把报错信息上报到自己的服务端。有一点要记住:Google 提醒,某些类型的 JavaScript 错误无法用这种方式记录,例如解析错误[3]。解析错误指脚本内容不符合语法,整份文件都读不进去,监听函数也就没有机会执行。
常见误用
- 只在访客浏览器里测试,不看爬虫的渲染结果。
- 报错没有上报,上线后无人察觉。
- 请求失败没有降级,一次异常带走整段渲染。
- 关键内容放在会抛错的脚本里,没有备用文案。
附录
参见
参考资料
官方(境外)
- 《控制流与错误处理》,MDN Web 文档,2025-12-05 更新。
- 《Window: error event》,MDN Web 文档,2026-04-10 更新。
- 《解决与 Google 搜索相关的 JavaScript 问题》,Google 搜索中心,2025-12-18 更新。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
外部链接
无。