AMP JS更新后ON属性失效,需等待修复还是可自行解决?
别急,不用只等着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
相关产品推荐
相关产品推荐

