我们有一个ASP.NET应用程序,当在客户端站点上运行时,它们经常会出现空引用Javascript错误。与所有这些错误一样,IE6显示的信息不太有用。但问题是,一旦我安装IE脚本调试器并尝试再调试一点,错误就变得不可重现。当没有安装脚本调试器时,再次发生错误。是否有任何其他工具可以帮助客户端站点上的JavaScript调试。 IE7或Firefox也不会产生错误。
答案 0 :(得分:7)
你至少知道什么对象是null吗?你知道什么线吗?
如果没有,您可以先注释掉代码,直到问题消失为止。然后开始零碎地把它带回来直到问题再次出现
alert()是你的朋友。尝试/捕获 - 有异常警报 - 也可以是你的朋友。
在firefox中使用firebug加载它可能有所帮助 - 即使firefox没有显示错误,firebug可能会给你一些有用的数据,特别是如果你可以缩小有问题的行或对象。同样,即使没有发生错误,IE脚本调试器也可以为您提供一些有用的信息。
代码是否被混淆了?问题是否在没有混淆的情况下发生?
您可以将源复制到本地文件中并使用代码而不涉及服务器吗?它会加速实验,你将会做很多事情。
答案 1 :(得分:2)
使用jslint检查您的代码 - IE6经常因为Firefox原谅的轻微语法错误而绊倒。
答案 2 :(得分:2)
对于任何关心的人,我发现了问题。这是.NET中与ASP.NET Ajax冲突的错误。它是在.NET 2.0 sp1中修复的,结果是没有安装,但是一旦我安装它,所有问题都消失了。
答案 3 :(得分:0)
Heisenbugs非常糟糕。我同意jsight,这些错误可能是由某些竞争条件引起的;即您正在尝试访问尚不存在的页面元素。
答案 4 :(得分:0)
您是否安装了Visual Studio?
如果是这样,请在IE中打开脚本调试,就像使用脚本调试程序一样。
在您的javascript中添加一行,如...
debugger;
然后运行您的页面。您应该看到一个对话框,要求您开始调试。选择VS的新实例并遍历代码以查看错误发生的位置。
答案 5 :(得分:0)
你试过Firebug Lite吗?它通过bookmarklet为您提供了许多Firebug的功能。我不确定它会对脚本错误本身有所帮助,但它会让你浏览加载的脚本和DOM。
Companion.JS也可能有用,因为它可以为您提供比IE更好的脚本调试帮助。