2010-07-27 77 views
0

我正在尝试调试大量复杂的Web应用程序,它们大量使用DIV,AJAX,动态HTML和服务器端代码来完成其工作。有什么工具可以跟踪IE7 javascript问题?

在正常操作下,我们没有问题。但是,当我们将webapp放入IFRAME中时,某些函数会在IE7中触发崩溃,导致浏览器无法运行(所有使用的CPU)。

有什么工具可以帮助追踪可能发生的事情?将IE进程载入调试器给了我各种有关寄存器的迷人信息,但我认为问题出在javascript上。

我们已经找到了一个问题的应用程序已经是涉及元素的不正确重排根(东西依附于的document.window.代替)

我写的转储IFRAME的innerHTML进入测试IFRAME页textarea,所以它可以在各种状态下进行比较,但只显示静态属性,我无法确定哪些javascript事件与元素相关联或确定处理程序是否正在触发。

IE8,Firefox,Chrome等没有相同的行为。

理想情况下,我希望能够让我在已知良好状态下快照DOM(或JavaScript VM?),然后“就在它发生之前”,以便我们可以找出添加/删除/缺失/不同。那里有什么?

更新:我现在试图使用IE开发工具栏来追踪它。

更新2:的IE7崩溃发生时跟随这AJAX代码:

function Sys$UI$Control$get_element() { 
    /// <value domElement="true" locid="P:J#Sys.UI.Control.element"></value> 
    if (arguments.length !== 0) throw Error.parameterCount(); 
    return this._element; 
} 

return this._element;线之前,我失去了IE浏览器出现这种情况的最后一件事。

回答

6
  1. IE开发人员的工具栏。下载它here(IEDevToolBarSetup.msi)。
  2. 有关JavaScript调试,请参阅this blog
+0

太棒了,忘了这一点。我使用的是古老的Microsoft Script Debugger,它至少在死亡之前找到了“最后的好函数调用” - 在Microsoft.Ajax.js中的东西... – mwalker 2010-07-27 20:44:45

+0

默认情况下嵌入在IE 7及更高版本中。对于6和以下你需要下载工具栏。 – 2010-07-28 11:14:04

0

IE开发人员工具栏肯定帮助很多。 Visual Studios的调试器也非常好,如果你能得到一台带有VS和IE7的机器的话。

+0

我的测试虚拟机上有Visual Studio Web Developer,但我永远无法让调试器启动,因此我可以逐步完成代码。我最终使用古老的Microsoft Script Debugger来查找特定的崩溃点。 – mwalker 2010-07-28 16:08:57

1

通过将'调试器'放置在您想要开始调试的位置的JavaScript文件中,您可以在Visual Studio中调试javascript以及跟踪,调用堆栈等等。

+0

这个答案应该有某种例子或者至少是一个例子的链接。 – hitautodestruct 2011-11-07 09:29:03

2

有人制作了一个名为Internet Explorer Collection的软件包。它包含6种不同的IE浏览器,从IE6到IE8的不同版本。所有这些包括Firebug(真的,它的作品)和Internet Explorer开发工具栏。

这对我调试IE7问题真的很有帮助。

请参阅this链接。

0

DynaTrace是一个用于IE7的分析工具。但是,它提供了大量的信息(包括JS堆栈),所以它对调试也很有帮助。

0

IE 7和IE 8内置了调试工具。按F12,您就可以进行调试了。另外萤火虫firefox和铬的检查元素选项是有用的/

+1

这只是IE8内置的,Chrome和Firefox不会出现崩溃。 – mwalker 2010-07-28 16:07:45