我有使用 ES6 和 jQuery Terminal 的代码,如果发生语法错误(在终端中),我想显示错误,这可能是因为浏览器不支持 ES6。
我有这样的代码:
window.onerror = function(message) {
message += '. Your browser may not support ES6.';
var term = $('body');
var args = [].slice.call(arguments);
if (term.hasClass('terminal')) {
$.terminal.active().error(message);
} else {
$('body').terminal(function() {
this.error('You need to use modern browser');
}, {greetings:greetings}).error(message);
}
};
我在输入的代码中犯了语法错误 <>
IE for var {foo} = bar
中会发生的模拟语法错误。但终端没有显示,屏幕上也没有错误。
最佳答案
问题在于 onerror 处理程序与触发语法错误的代码位于同一脚本中,因此执行被中止并且 onerror 未执行。
解决方案是将 onerror 处理程序放在单独的 <script>
中在我的代码之前标记,如下所示:
<script>
var greetings = 'greeting';
window.onerror = function(message) {
message += '. Your browser may not support ES6.';
var term = $('body');
// only ES5
var args = [].slice.call(arguments);
if (term.hasClass('terminal')) {
$.terminal.active().error(message);
} else {
$('body').terminal(function() {
this.error('You need to use modern browser');
}, {greetings:greetings}).error(message);
}
};
</script>
<script src="es6-library.js"></script>
<script>
/* my ES6 code */
</script>
关于javascript - 在不支持 ES6 的浏览器中捕获 JavaScript 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964846/