如何在加载期间收到错误时继续执行javascript
不确定表达问题的最佳方式,但假设您正在使用jQuery设置如下各种内容:如何在加载期间收到错误时继续执行javascript,javascript,jquery,error-handling,Javascript,Jquery,Error Handling,不确定表达问题的最佳方式,但假设您正在使用jQuery设置如下各种内容: <script> function doSecond(){ alert("Hi"); } function dofirst(){ var x = asdasd; } $(dofirst); $(doSecond); </script> 现在,如果你想知道我为什么要这么做?那么,以您现在看到的页面上的代码为例:
<script>
function doSecond(){
alert("Hi");
}
function dofirst(){
var x = asdasd;
}
$(dofirst);
$(doSecond);
</script>
现在,如果你想知道我为什么要这么做?那么,以您现在看到的页面上的代码为例:
<script type="text/javascript">
$(function() {
$('#title').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').hide(); $('#how-to-title').fadeIn('slow'); });
$('#wmd-input').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').fadeIn('slow'); $('#how-to-title').hide(); });
$('#tagnames').focus(function() { $('#how-to-tag').fadeIn('slow'); $('#how-to-format').hide(); $('#how-to-title').hide(); });
});
</script>
$(函数(){
$(“#标题”).focus(函数(){$(“#如何标记”).hide();$(“#如何格式化”).hide();$(“#如何标题”).fadeIn('slow');});
$('wmd input').focus(函数(){$('wmd-input').hide();$('wmd-input').fadeIn('slow');$('how-to-title').hide();});
$(“#标记名”).focus(函数(){$(“#如何标记”).fadeIn('slow');$(“#如何格式化”).hide();$(“#如何标题”).hide();
});
当您单击某些dom元素时,是否真的需要它们淡出?不,但如果您在该函数中出错,那么很可能您确实需要运行的其他javascript可能永远无法安装 有几种方法可以确保事物独立运行:
- 如你所说,试着/抓住每一个
- 在setTimeout(或 不管jQuery语法是什么 是为了这个)
- 分为不同的
块
- 显然,从不抛出异常是一个荒谬的建议。尤其是在许多浏览器/版本/服务器启动/服务器关闭的世界中。有这么多的网站JS打破它很难找到一个任何大小的网站不抛出某种类型的异常(在控制台检查)
您可以创建一个简单的包装器(或扩展现有的jQuery方法)
最好的方法是让代码不抛出异常。页面错误应该一直被视为bug,并被修复。所以最好的解决方案是不犯错误+1 :)
<script type="text/javascript">
$(function() {
$('#title').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').hide(); $('#how-to-title').fadeIn('slow'); });
$('#wmd-input').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').fadeIn('slow'); $('#how-to-title').hide(); });
$('#tagnames').focus(function() { $('#how-to-tag').fadeIn('slow'); $('#how-to-format').hide(); $('#how-to-title').hide(); });
});
</script>
function safeonload(fn){
$(function(){
try{
fn();
}catch{
//log?
}
});
}
safeonload(doFirst);
safeonload(doSecond);