jquery start()函数未捕获错误

时间:2010-02-24 19:47:18

标签: javascript jquery error-handling stack-trace onerror

[更新]。我需要更精确,我看...... 请参阅javascript中的以下示例:

<html>
  <head>
    <script>
      window.onerror = function() {
        alert('error'); // this one works
        try {i.dont.exist += 0;}
        catch(e) {
          // do some stacktrace stuff, this does not trigger
          alert(e.stack);
        }
      };
    </script>
    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js' type='text/javascript'></script>
    <script>
      $(document).ready(function() {
        foo[1]++;
      });
    </script>
  </head>
<body>
  <p>Hello world.</p>
</body>
</html>

2.未触发警报。为什么? 如果我将“foo [1] ++”替换为“这是一条虚假行”,一切正常并触发两个警报。是否存在运行时错误问题?

1 个答案:

答案 0 :(得分:1)

由于您的Javascript错误导致错误处理函数未成功定义,因此未触发警报:-)该代码块无法正确解析,因此无法运行。

以这种方式设置:

<script>
  $(function() {
    window.onerror = function() {
      // ...
    };
  });
</script>

如果它在自己的脚本标签中,那就没关系。现在,您可能需要重新考虑将错误处理程序的定义延迟到“就绪”事件处理,因为在达到该点之前可能会出现错误。

[编辑]好了这里是一个完整的例子,它对我来说很好用:

 <html>
   <head>
     <script>
       window.onerror = function() {
         alert("OH NO THERE HAS BEEN AN ERROR!");
       };
     </script>
     <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js' type='text/javascript'></script>
     <script>
       $(function() {
          here is some bogus stuff that will cause Javascript parse errors.
       });
     </script>
   </head>
   <body>
     <p>Hello world.</p>
   </body>
 </html>