如何解决有没有办法在现代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 举报,一经查实,本站将立刻删除。