我正在尝试调试一个庞大而复杂的Web应用程序,它大量使用DIV,AJAX,动态HTML和服务器端代码来完成它的工作。
在正常操作下我们没有问题。但是,当我们将webapp放入IFRAME时,某些功能会触发IE7中的崩溃,导致浏览器无法运行(使用所有CPU)。
有哪些工具可以帮助追踪可能发生的情况?将IE进程加载到调试器中可以获得有关寄存器的各种有趣信息,但我认为问题出在javascript中。
我们已经跟踪了一个问题已经涉及到错误重新定位元素的应用程序(某些内容附加到window.
而不是document.
)
我编写了一个测试IFRAME页面,它将iframe的innerHTML转储到textarea中,因此可以在各种状态下进行比较,但这只能显示静态属性,我无法分辨哪种类型的javascript事件与元素或确定处理程序是否在不合规定的情况下发射。
IE8,Firefox,Chrome等没有相同的行为。
理想情况下,我想要一些让我在已知良好状态下快照DOM(或javascript VM?)的东西,然后“就在它发生之前”,这样我们就可以找出添加/删除/丢失/不同的内容。有什么?
更新:我现在正在尝试使用IE Developer Toolbar来追踪它。
更新2:在此AJAX代码之后发生IE7崩溃:
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之前发生的最后一件事。
答案 0 :(得分:6)
答案 1 :(得分:2)
有些人制作了一个叫做Internet Explorer Collection的软件包。它包括6种不同的IE浏览器,从不同版本的IE6到IE8。所有这些都包括Firebug(实际上,它有点工作)和Internet Explorer Developer Toolbar。
调试IE7问题对我来说真的很有帮助。
请参阅this链接。
答案 2 :(得分:1)
通过在您要开始调试的地方的javascript文件中放置'debugger',您可以在visual studio中调试javascript以及完成跟踪,调用堆栈等操作。
答案 3 :(得分:0)
IE开发人员工具栏肯定有很多帮助。 Visual Studios的调试器也非常好,如果你能得到一台带有VS和IE7的机器。
答案 4 :(得分:0)
DynaTrace是IE7的分析工具。但是,它提供了大量信息(包括JS堆栈),因此它对调试也非常有用。
答案 5 :(得分:0)
IE 7和IE 8内置了调试工具。按F12键即可进行调试。 firebug-firefox和chrome的inspect元素选项也很有用/