【问题标题】:Catch Syntax error in JavaScript for ES6 not supported browsers在 JavaScript 中为 ES6 不支持的浏览器捕获语法错误
【发布时间】:2018-02-24 16:13:16
【问题描述】:

我有使用 ES6 和 jQuery 终端的代码,如果发生语法错误(在终端中),我想显示错误,这可能是因为浏览器不支持 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 中会发生的模拟语法错误。但是终端没有出现,屏幕上也没有错误。

【问题讨论】:

    标签: javascript error-handling ecmascript-6


    【解决方案1】:

    问题是 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2017-06-19
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2016-06-13
      • 1970-01-01
      相关资源
      最近更新 更多