在IE7中调试JavaScript


160

我需要在Internet Explorer 7中调试JavaScript。

不幸的是,它的默认调试器没有为我提供很多信息。它告诉我页面上显示了错误(不是特定的脚本),并给了我一个行号。我不知道这是否与我的问题有关。

如果可以将错误缩小到特定脚本上的行号(如Firebug可以),那就太好了。

是否像Firefox中的Firebug一样在IE7中调试JavaScript?

谢谢!

也可以看看:

IE7是否具有“开发人员模式”或Firefox / Chrome / Safari这样的插件?

Answers:


90

Web开发助手非常好。

IE工具栏开发往往是有帮助的,但遗憾的是没有做脚本调试


4
也许值得注意的是,您必须在高级选项中关闭“禁用调试”。
Dan Rosenstark 2011年

24
我没有在IE Dev Toolbar中看到任何脚本调试选项,并且即使更改了我的高级首选项并重新启动IE7,最新版本的Web Development Helper也无法正常工作。
stevebot 2011年

9
上面给出的Web Development Helper链接已失效。谁能确认这是这里托管的相同工具?softpedia.com/get/Tweak/Browser-Tweak/...
RMorrisey

3
噢,讽刺的是;Web开发帮助器的softpedia下载链接在IE7中死亡!(可怕的“操作异常终止”错误。)
肖恩·麦克米兰

1
我认为该链接导致了恶意软件。

41

硬道理是:IE的唯一好的调试器是Visual Studio。

如果您没有足够的资金来进行实际交易,请下载免费的Visual Web Developer 2008速成版Visual Web Developer 2010速成版。虽然前者允许您将调试器附加到已经运行的IE,但后者则不允许(至少我使用的先前版本不允许这样做)。如果仍然如此,诀窍是用一个空网页创建一个简单的项目,“运行”它(它启动浏览器),现在导航到要调试的任何页面,然后开始调试。

微软会针对各种事件提供完整的Visual Studio,通常会有许可证限制,但是它们允许在家中进行修改。检查他们的日程安排和赠品清单。

另一个提示:尝试首先使用其他浏览器调试Web应用程序。我在Opera上取得了巨大的成功。不知何故,Opera对IE及其错误的仿真非常接近,但是调试器要好得多。


2
有关分步说明的信息,请参见@mitjak的答案
rymo 2012年

4
VS不是IE的唯一好的调试器,尽管我同意没有很多好的调试器。这是我多年来一直在使用的一种IE专用javascript调试器,尽管它不是免费的:javascript-debugger.com

与VS 2008的链接不见了。现在转到VS 2012的页面
Sean McMillan

有VS 2012 Express Edition,它仍然是免费的(旧链接实际上指向它)。
Eugene Lazutkin

1
VS2012 Express需要Windows7。如果您要调试IE7,这没有帮助。你需要的是VS2010网络快车:microsoft.com/web/gallery/...
迈克·波斯特

32

您可能要尝试使用 Microsoft脚本调试器, 它已经相当老了,但是如果您偶然遇到任何JavaScript错误,它在某种意义上是非常有用的,调试器会弹出来向您显示哪一行混乱了。进行正常的冲浪时,有时可能会发怒,但如果关闭,则可以将其关闭。

这也是有关如何使用此工具的很好的入门。 如何:在Internet Explorer中调试JavaScript


howto链接已损坏。这是更新的链接:jonathanboutelle.com/2006/01/16/…–
Dana

出色的低摩擦调试路线,而无需安装任何第三方软件。
乔恩·哈德利

27

我找到了DebugBar

不如Firebug好,但是很近。


3
仍然比开发人员工具栏更好
Sam Saffron

2
我不知道为什么这不是公认的答案。远远优于其他任何IE调试器。
Tres

1
实际上,我在他们的网站上找到了提到的免费“ Companion JS ”,效果最佳。它准确地告诉您错误发生在哪个JS文件和行号上。
泰勒2012年

25

在IE7中,您可以通过在地址栏中粘贴以下内容来打开当前页面的firebug lite:

javascript:var firebug=document.createElement('script');firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.firebug.version){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug);

请参阅http://getfirebug.com/lite.html


6
Firebug lite不执行Javascript
Casebash 2012年

我在FireBug lite停下来对其控制台进行调试
Eugene Gluhotorenko

它确实有一个运行JavaScript的控制台,这正是我所寻找的。
Alex W

检查IE 7上的元素真的很有用。谢谢!:)
Leniel Maccaferri 2014年

7

Microsoft脚本编辑器确实是一个选项,并且在我尝试过的其中一个更稳定的选项中-IE8中的调试器很棒,但是由于某些原因,每当我启动开发人员工具时,IE8都会花费一段时间,有时甚至会长分钟,检查我页面的DOM树。然后似乎要在每次刷新页面时都要这样做,这是一种折磨。

可以在Microsoft脚本编辑器中检查变量的内容:如果在“调试”>“窗口”下戳一下,则可以打开局部变量检查,监视等功能。

另一个选择是Visual Web Dev,尽管体积很大,但效果很好。要进行设置,请执行以下操作(从此处偷走):

  1. IE中应打开调试功能。进入工具> Internet选项>高级,并检查禁用脚本调试(Internet Explorer)中没有被选中和每个脚本错误的显示通知检查
  2. 在VWD内创建一个新的空Web项目
  3. 右键单击右上角的解决方案资源管理器中的站点,转到“浏览方式”,并确保将默认浏览器设置为IE(这是合理的假设,如果您是Web开发人员,则IE 不是您的默认浏览器不会是默认值。默认情况下)
  4. 按F5键,IE将打开。浏览到要调试的页面。
  5. 现在,只要遇到脚本错误或在其中一个JS文件中设置断点,VWD就会打开。调试一下!

更新:顺便说一句,如果使用IE8不错的调试器遇到与我相同的速度下降,则有一种解决方法-如果遇到或使IE遇到错误,则它会弹出“您要调试”对话框并点击是,调试器将立即启动。看来,如果您直接进入调试模式,则开发工具将永远不会检查DOM。只有当您按F12键时,它才起作用。


我将不得不对此进行更多测试,但到目前为止,在兼容模式下浏览时,似乎IE8调试器的运行速度更快。去搞清楚!
dmkc,2009年

1
如果您使用的是VWD的Express(免费)版本,请确保在第4步之前关闭了所有IE窗口-VWD必须是重新启动IE的窗口,以便它“拥有”它。
rymo

3

IE8改进了开发人员工具。在此之前,最好先为Firefox编写JavaScript,然后再使用alert()语句调试IE。


等不及IE8(只要它不辜负炒作-我还没有下载Beta版)
Alex

现在已经淘汰了,我必须说我比调试器更喜欢调试器:)
Joel Coehoorn

@Joel,尽管调试器很棒,但令我烦恼的(Firebug拥有)是右键单击上下文菜单,您可以在其中选择“检查元素”。据我所知,在IE8中,您必须启动开发人员工具,然后单击箭头,然后找到要检查的元素。
alex

3

Microsoft脚本编辑器可用于在IE中调试Javascript。它比Microsoft Script Debugger的bug少,但具有相同的基本功能,不幸的是,它几乎仅限于逐步执行。我似乎无法检查变量或类似的方便内容。此外,出于某些奇怪的原因,它仅随Office XP / 2003一起提供。如果您是游戏玩家,请点击此处了解更多信息。

我下载了Eugene Lazutkin提到的Visual Web Developer 2008 Express Edition,但是还没有机会尝试。我建议在脚本编辑器/调试器之前尝试一下。


3

它不是一个完整的调试器,但是我的DP_DEBUG扩展提供了一些(我认为)有用的功能,并且可以在IE,Firefox和Opera(9+)中使用。

您可以“转储”复杂JavaScript对象(甚至是系统对象)的可视表示,简化日志记录和计时。该组件提供了启用或禁用它的简单方法,因此您可以根据需要将调试器留在原处进行生产工作。

DP_调试


2

IE9开发人员工具为我工作。只需将“浏览器模式”菜单项设置为IE7。


7
这很有用,但是模拟的IE7不太一样。
alex 2012年

我想这取决于。如果我可以在IE9的模拟模式下重现问题,那么我将在那里进行修复。否则,Firebug Lite是一个很好的解决方案-尽管您需要在某处安装IE7。

1

嘿,我遇到了同样的问题,并找到了IETESTER应用程序。非常棒,它是一个捆绑了IE 5.5、6和7的应用程序。您当前使用的IE版本无关紧要。这使您可以并排拥有多个版本。

如果您在IE选项中启用了JavaScript调试功能并安装了Visual Studio,则您甚至可以使用所有可用的调试选项(手表,条件断点等)在VS中调试javascript。

如果您想在错误发生之前就开始调试,只需要把线放在

debugger;

到您的JS代码中,这使您进入VS,在此语句之后开始调试。

对于测试JS代码的向后兼容性,这绝对让我感到惊奇。


0

使用Internet Explorer8。然后尝试使用开发人员工具。.您也可以在兼容模式下基于IE 7进行调试。


17
IE7!= IE8兼容模式。存在不兼容性。

1
+1至少IE8会告诉您引起错误的脚本文件名。
庞斯上校10年

@thorn,但是有IE7模式。(也许以前没有?)所以:常规,兼容模式,IE7模式。
阿涅夫斯

1
@ANeves同一件事只是名字不同
刺̈2011年

4
@ANeves看起来“ IE7模式”只是“兼容模式”,而用户代理已更改为IE7使用的用户代理。但我想再次强调一下,兼容模式不是那么兼容。例如,通过jQuery重置样式属性在IE7(和其他浏览器)中如下所示:$my.css('z-index', null)。在IE8中,即使在所谓的兼容模式下,此代码也会引发错误。所以我不得不写这样的代码:$my.css('z-index', ie8 ? 'auto' : null)
刺̈2011年


0

答案很简单。

  1. 获取Internet Explorer 9
  2. 按F12加载开发人员工具
  3. 将浏览器模式切换为IE7

在IE9上切换浏览器模式


6
因为它不可靠:(我当前与IE7连接的项目中的所有打开的票证都无法在Windows 7的Vista中再现
AlfeG 2012年

4
如果错误是可重现的,可能会有所帮助。但是有一些错误,在使用IE7模式的IE9中不会发生,但是在原始IE7(与IE8相同)中不会发生
yunzen 2012年

0

通过Javascript静态分析工具(如JSLint)运行代码可能会捕获一些常见的IE7错误,例如对象定义中的逗号结尾。



0

如果仍然需要调试IE 7,则IE 11的仿真模式可以很好地运行。

转到菜单:开发工具,然后进行仿真并进行设置。它还提供错误行信息。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.