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

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

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

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

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

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

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

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

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

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

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

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

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’之前抛出……”)。 这绝对是一个单调乏味的过程,但它是经过validation的,而且更重要的是会使您的代码无错误。