在IE7中调试javascript'未指定的错误'

时间:2011-11-07 14:41:09

标签: javascript

我的应用程序在Visual Studio 2008中,.net 3.5在IE7下运行 它在Firefox中运行良好,但在IE7中得到“未指定的错误” -

Error - 
Line: 28
Char: 56
Error: Unspecified error.
Code:0
URL: ***.aspx

由于此页面上有大约15个.js文件,所以即使找到错误代码也无法获取任何信息。

有人可以指导我调试此错误的方法。

谢谢!

2 个答案:

答案 0 :(得分:2)

IE7调试器一文不值。

但是有一个很好的工具Internet Explorer Developer ToolbarWeb Development Helper

你也应该阅读stackoverflow / Debugging JavaScript in IE7

答案 1 :(得分:0)

Unspecified error.可能意味着很多事情。以下是识别问题的一些提示。

运行JavaScirpt Linter

您可以将代码粘贴到JSLint.comJSHint.com,安装JSHint或其他JavaScript Linters。

在这种情况下,JSHint可能是你最好的选择,因为它有一些选项可以使它更严格,并且对于旧版本的规范。您可以查看list of JSHint options,但这里重要的是es3

  

如果您需要在旧版浏览器中执行程序,请使用此选项,例如Internet Explorer 6/7/8/9

将其添加到JS文件的顶部:

/* jslint es3: true */

或者将.jshintrc文件添加到目录或JS文件上方的目录中并将其放入其中:

{
  "es3": true
}

然后运行JSHint:

jshint myfile.js

某些Internet Explorer 7发布

new关键字

我注意到我得到的Unspecified error实际上是我使用new关键字作为对象属性,如下所示:

var MyCustomClass = function() { /* ... */ }
MyCustomClass.new = function() {
/*            ^ Unspecified error here */
  var mycustomclass = new MyCustomClass();
  // Do extra stuff with mycustomclass
  return mycustomclass;
}

上面,我在创建类时使用new作为辅助方法来做一些额外的事情。这可能不是理想的解决方案,现在我可以在类构造函数中做这些事情,但我的问题是我使用new关键字作为对象属性。显然IE7认为这是一个脚本停止错误,而较新的浏览器没有(我不知道IE8)。

访问offsetParent

在阅读元素的offsetParent时,IE7会提供精彩的Unspecified error.有一个StackOverflow question about this。您可以通过将代码包装在try catch

中来解决此问题
var op;
try {
  op = element.offsetParent
}
catch(unused) {}