调试时如何忽略某些脚本文件/行?

时间:2011-06-02 10:36:50

标签: javascript jquery internet-explorer debugging firebug

我正在尝试调试一些JavaScript,我想知道当我将鼠标悬停在某个div元素上时会执行什么代码(我不知道哪些代码,因为没有直接'onmouseover' - 我认为某处有一个jQuery选择器?)。

通常我会使用Developer Tools / Firebug提供的“Break All”/“Break On Next”工具,但我的问题是其他代码(代码,鼠标移动监听器等)会立即被捕获。

我想要做的是告诉调试器忽略某些JavaScript文件或单独的行,这样它就不会停止在我不感兴趣或已排除的代码上。有没有办法在IE中实现这一点( spit,spit!) - 或者你能建议一个更好的方法吗?

6 个答案:

答案 0 :(得分:15)

在FireFox中,此功能称为"Black boxing",可以在FireFox 25中使用。它可以让您完全按照所需的方式进行操作。

此功能也被引入Chrome(v30 +),但查找/配置更难。它被称为"跳过具有特定名称的来源"和科林·米勒did an excellent job in describing how to configure it

通常我会把答案和howtos放在这里而不是链接,但它只会在我复制Collin的帖子时结束。

答案 1 :(得分:5)

看起来你正在寻找Visual Event

答案 2 :(得分:5)

您可能需要查看Paul Irish's Re-Introduction to the Chrome Developer Tools,特别是时间轴部分(在视​​频开始大约15分钟后开始。)

您可以开始记录所有javascript事件 - 函数执行(使用源代码行等)并根据触发的事件进行调试。还有其他非常方便的调试工具隐藏在谷歌IO谈话中,可以帮助您解决这个问题。

答案 3 :(得分:2)

如果您非常确定它是一个jQuery事件处理程序,您可以尝试使用jQuery事件。 这将覆盖所有点击处理程序(替换为您感兴趣的类型)并在调用每个事件处理程序之前注销:

var elem = document.body; // replace with your div
// wrap all click events:
$.each($._data(elem).events.click, function(i, v) { 
    var h = v.handler; 
    v.handler = function() {
      // or use 'alert' or something here if no Dev Tools
      console.log('calling event: '+ i);
      console.log('event handler src: '+ h.toString()); 
      h.apply(h, arguments); 
    };
})

然后尝试直接通过jQuery调用事件类型来排除该类型:

$('#your_div').click()

答案 4 :(得分:1)

您可以在Firefox中使用JavaScript Deobfuscator扩展程序:https://addons.mozilla.org/addon/javascript-deobfuscator/。它使用与Firebug相同的调试API,但结果不同。

在“已执行的脚本”选项卡中,它将显示正在运行的所有代码。如果某些不相关的代码也在执行,通常很容易跳过。但您也可以调整默认过滤器以限制显示的代码量。

答案 5 :(得分:0)

如果正在使用IE 7.0以上,您应该有可以调试的开发人员工具栏。只需在需要的地方使用断点,其余代码就不会停止。   另外,您也可以定义其他应用程序,如Interdev / Visual Studio.net,以便进行调试。