处理jQuery(document).ready中的错误

3ho*_*ugh 14 javascript jquery

我正在开发用于Web框架的JS,并经常与其他开发人员(通常容易出错)的jQuery代码混合使用.不幸的是,他们的jQuery(文档).ready块中的错误阻止了我的执行.采取以下简单示例:

<script type="text/javascript">
    jQuery(document).ready(function() {
        nosuchobject.fakemethod();       //intentionally cause major error
    });
</script>
<script type="text/javascript">
    jQuery(document).ready(function() {
        alert("Hello!");                 //never executed
    });
</script>
Run Code Online (Sandbox Code Playgroud)

不管先前发生了什么,第二个就绪块不应该执行吗?是否有一种"安全"的方式来运行jQuery(document).ready即使出现以前的错误也会运行?

编辑:由于它们是由其他作者编写并且是任意混合的,因此我无法控制/查看容易出错的块.

jve*_*ema 14

我没有尝试过这段代码,但它应该可行(至少,这个想法应该是这样).确保在jquery之后包含它,但是在任何可能有bug的脚本之前.(没必要,请参阅评论.)

var oldReady = jQuery.ready;
jQuery.ready = function(){
  try{
    return oldReady.apply(this, arguments);
  }catch(e){
    // handle e ....
  }
};
Run Code Online (Sandbox Code Playgroud)