有没有办法在现代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 (将#修改为@)