在IE中禁止“完成,但页面上有错误”

时间:2010-05-12 20:07:24

标签: javascript jquery internet-explorer error-handling

我有一个网站,使用大量的jQuery和JavaScript,在IE的页脚中生成“完成,但页面上有错误”的消息。网站上的所有内容都可以正常运行,因此我不想花时间排查确切的错误。我想做的就是压制“完成,但页面上有错误”的消息,这样客户就不会惊慌失措。

我在页面顶部尝试了以下操作但没有成功:

window.onerror = function() {return true;}

5 个答案:

答案 0 :(得分:7)

您无法阻止浏览器告知用户页面上存在错误。这将是一个安全漏洞,你真的没有权利。您别无选择,只能尝试修复它或让用户看到该消息。

这是否意味着您应该尝试修复错误?好吧,看到你无法抑制它,并且你认为用户不会喜欢这个消息是正确的,并且有大量优秀的调试工具可用,实际上没有理由不这样做。

注意你工具给你的警告,我在街上听说编写它们的人都是非常聪明的饼干。 :D

答案 1 :(得分:3)

您是否尝试在Firefox中使用Firebug来帮助您找出错误是什么?

Firebug是一个很棒的javascript工具,可以提供有关javascript错误原因的更多信息

答案 2 :(得分:0)

您应该使用IE开发人员工具来调试错误。

答案 3 :(得分:0)

正确编码或使用丑陋的黑客

try{
 // all your buggy code
} catch(e){
 // please don't do this - instead fix your code.
}

答案 4 :(得分:0)

Javascript Error对象包含不同broswers的不同字段:

在IE中,您可以访问Error.name,Error.message,Error.number和Error.description。

在FF中,您可以访问Error.name,Error.message,Error.fileName,Error.lineNumber和Error.stack(堆栈跟踪,显示“@”+ Error.Filename +“:”+ Error.lineNumber)

try {
  // all your buggy code
} catch (e) {
  // in FF you can add e.lineNumber or e.stack
  alert("Error: " + e.name + " - " + e.message); 
}

您可以在IE中使用此功能,但遗憾的是您无法将其跟踪到行号。要缩小IE中的违规代码,请在代码中添加几个“标记”:

var myObject = new Object();
myObject.prototype.myFunction = function() {
  alert('start');
  // some code here
  alert('1');
  // some more code here
  alert('2');
  // some more code here
  alert('3');
  // some more code here
  alert('done');
} 

在您加载脚本时,请在关闭警报时注意“完成但错误”图标。然后,您可以缩小代码中引发错误的位置(即“错误在'2'之后但在'3'之前抛出......”)。这绝对是一个单调乏味的过程,但它是经过验证的,更重要的是会使您的代码无错误。