解决 Edge 浏览器 SCRIPT5022: Exception thrown and not caught
JS 代码在 Safari, Chrome, Firefox 都是好的,就只有 Edge 莫名其妙地报错。
1 | SCRIPT5022: Exception thrown and not caught |
未捕获的异常?EXM?你倒是说是什么异常啊?行号还是错的?点过去无法定位错误位置?hash-navigation.js
?我的项目里根本都没有这个 js 啊喂!
后来怎么解决的呢?因为这个错误是在滚轮滚动的时候打出来的,我在项目中各个 onScroll
方法外层加了 try catch 块。
1 | try { |
于是真相水落石出了。
某处代码迭代了 DOM 元素,而在 Edge 中,document.getElementsByClassName
的返回不支持迭代,其他浏览器不存在这个问题。
1 | const doms = document.getElementsByClassName('some-class') |
换一种兼容性更好的迭代方式就好了
1 | const doms = document.getElementsByClassName('some-class') |
如果你也遇到了这个异常,可以试试加 try catch 的办法,从而定位问题根源。
解决 Edge 浏览器 SCRIPT5022: Exception thrown and not caught