You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AMP JS更新后ON属性失效,需等待修复还是可自行解决?

解决AMP站点AMP.navigateTo触发报错的可行方案

别急,不用只等着Google AMP团队修复,这里有几个你可以立刻尝试的自查和修复方向:

1. 先排查URL本身的问题

从报错信息看,核心是字符串处理时读取length失败,大概率是传递给AMP.navigateTo的URL有问题:

  • 先把URL换成一个绝对的、无特殊字符的测试地址(比如https://example.com),看看按钮能不能正常触发跳转,排除URL格式错误或者动态生成时变成undefined的情况。
  • 如果URL里包含特殊字符(比如&、空格、中文等),要确保已经正确转义(比如把&换成&,或者对URL进行编码)。

2. 改用AMP推荐的跳转写法

AMP官方其实更推荐用<a>标签结合role="button"来实现按钮跳转,这种写法比on="tap:AMP.navigateTo"更稳定,也符合AMP规范:

<a href="https://my_url" role="button" class="your-button-style-class">点击跳转</a>

把原来带on属性的按钮替换成这种写法,基本可以绕过当前的事件处理bug。

3. 验证AMP页面的合规性

用浏览器的AMP验证工具(比如Chrome的AMP Validator插件)检查页面有没有其他违反AMP规则的地方——有时候页面上的其他错误(比如未正确引入组件、自定义脚本违规)会导致AMP的事件处理逻辑异常。修复所有验证报错后,再测试按钮功能。

4. 锁定AMP运行时到旧版本

如果是最新的AMP运行时引入了bug,你可以暂时回退到5月23日之前的稳定版本:

  • 找到页面中引入AMP运行时的脚本:
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    
  • 替换成指定版本的地址(格式为https://cdn.ampproject.org/rtv/[版本号]/v0.js),比如之前正常运行时的版本,这样可以避开新版本的bug。

5. 清除本地缓存

本地开发时,浏览器可能缓存了旧的AMP运行时文件,尝试强制刷新页面(Ctrl+Shift+R)或者清除浏览器缓存后重新加载,看看是不是缓存导致的异常。


内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:40:17