微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在现代JS代码中使IE11中的语法错误静音?

如何解决有没有办法在现代JS代码中使IE11中的语法错误静音?

我们正在开发一个现代的JS库,该库大量使用ES6语法,不支持IE11。

但是,我们有少数用户希望在与IE11兼容的网站上使用我们的库,并且我们不想破坏他们在IE11上的网站。

问题:有什么方法可以防止我们的库在IE11上“爆炸”? (如果检测到IE11,则所有库函数都无法执行任何操作并返回undefined

例如,我们正在尝试基于浏览器检测的以下方法

function libFunction() {
  if(isIe11()) {
    return;
  }
  // otherwise do some real stuff with ES6-heavy code
}

但是上述方法不起作用,因为IE11即使在从未执行的代码中也会引发语法错误,因此我们最终会遇到以下错误

SCRIPT1002: Syntax error
File: main.db33ab01aedf59e2f70a.hot-update.js,Line: 47,Column: 1

我们考虑的其他方法

  • 如果在请求标头中检测到IE11 User-Agent,则使我们的服务器返回我们库的伪造实现。这将部分解决我们的问题,但不会帮助用户,他们通过NPM / webpack将我们的库集成到他们的捆绑软件中,而不是在运行时从我们的服务器上获取它。
  • 将我们的ES6代码转换为IE11友好代码,并填充所有API-我们不这样做,因为我们不希望现代浏览器用户支付肿的ES5代码polyfills的价格。
  • 重写全局错误处理程序以使错误静音-这将不起作用,因为我们得到的错误是语法错误,无法由错误处理程序处理。

还有其他可能的解决方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。