有没有办法强制Internet Explorer在alert()上中断?

时间:2011-07-01 16:12:49

标签: javascript debugging internet-explorer-8

我正在尝试使用IE8和Visual Studio 2010在基于web / ASP.Net的大型复杂框架中调试错误消息。具体来说,我收到一个“未找到成员”消息框,似乎是直截了当的JavaScript警报()。不幸的是,我不知道代码中的问题发生在哪里,fiddler2在这种情况下帮助不大。

我的问题是,使用IE选项,工具或其他方法,我可以让IE在alert()调用中断,以便我可以调试吗?

6 个答案:

答案 0 :(得分:5)

字符串搜索“未找到成员”

在该行之前添加1 / 0;

打开所有错误的中断。

(我假设您知道开发人员工具已存在。点击F12并导航到脚本选项卡)

修改

感谢@DmitriyNaumov

var aalert = window.alert;
window.alert = function() {
  aalert.apply(this, arguments);
  1 / 0;
}

答案 1 :(得分:1)

您可以尝试使用Microsoft的IE Developer Toolbar。我不知道它是否允许你设置JS断点,但无论如何它都是一个很棒的工具!

答案 2 :(得分:1)

您可以使用IE调试器,按 F12 ,然后在脚本选项卡下添加断点

答案 3 :(得分:1)

使用IE 8,您可以使用开发人员工具,这有点像Firebug for Mozilla Firefox。

http://www.microsoft.com/download/en/details.aspx?id=18359

(更多信息)

通过这种方式,您可以逐步创建断点并在页面上调试脚本执行

按F12

答案 4 :(得分:0)

alert更改为抛出正确错误的新函数。

window.alert = function(msg) {
  throw "Alert: " + msg;
};

较旧版本的IE不允许在JavaScript中以这种方式覆盖窗口属性,例如警告...但您仍然可以使用VBScript执行此操作。

Sub alert(msg)
  Err.Raise 8, "Alert", msg
End Sub

如果您使用VBScript路线,请确保它在任何引用alert功能的JavaScript之前,否则您将错过机会。

答案 5 :(得分:0)

如果是window.alert,你可以这样做:

  1. 在IE中启用外部调试程序。
  2. 将visual studio作为脚本调试器附加。
  3. 重现问题。
  4. 显示警告框时,在调试器中断。
  5. 当你关闭警报时,调试器将暂停在下一行代码上。
  6. 使用当前的调用堆栈设置断点,以便在下次调用最有用之前。
  7. 不幸的是,这个技巧仅适用于警报和确认,因为它们是模态对话框。