我正在尝试调试一些JavaScript,我想知道当我将鼠标悬停在某个div元素上时会执行什么代码(我不知道哪些代码,因为没有直接'onmouseover' - 我认为某处有一个jQuery选择器?)。
通常我会使用Developer Tools / Firebug提供的“Break All”/“Break On Next”工具,但我的问题是其他代码(代码,鼠标移动监听器等)会立即被捕获。
我想要做的是告诉调试器忽略某些JavaScript文件或单独的行,这样它就不会停止在我不感兴趣或已排除的代码上。有没有办法在IE中实现这一点( spit,spit!) - 或者你能建议一个更好的方法吗?
答案 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,以便进行调试。