javascript - 在不支持 ES6 的浏览器中捕获 JavaScript 中的语法错误

标签 javascript error-handling ecmascript-6

我有使用 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/

相关文章:

php - 将 Ajax 与 Javascript 混合

javascript - 通过谎言@media 查询的非响应式 Bootstrap

javascript - 与 native 文件系统共享网页中的变量

javascript - 导入类的函数未定义

javascript - 如何打印属性名称而不是整个 JS 对象?

javascript - 在 vue.js 应用程序中使用外部 js 库

php - PHP基础知识-如何删除公告

c - 使用指针打印二维数组时出错

laravel - 调用未定义的方法Illuminate\Auth\GenericUser::save()

javascript - ES6 导出和导入函数