如何跟踪像onclick onblur这样的JavaScript事件?

Maf*_*fti 12 javascript debugging events

有没有办法调试或跟踪Internet Explorer 7中的每个JavaScript事件?

我有一个错误,阻止文本选择后滚动,我不知道哪个事件或操作创建了错误.我真的想看看当我移动鼠标时触发了哪些事件.

重新连接源是太多的工作,我希望有一些像嗅探器一样向我展示所有被触发的事件.

nic*_*ckf 11

遍历页面上定义了onXYZ函数的所有元素,然后将跟踪添加到它们:

var allElements = document.all; // Is this right? Anyway, you get the idea.

for (var i in allElements) {
    if (typeof allElements[i].onblur == "function") {
        var oldFunc = allElements[i].onblur;
        allElements[i].onblur = function() {
             alert("onblur called");
             oldFunc();
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 用于显示代码的+1.有趣的方法......您还可以在此处展开​​alert()以显示元素的标记名称及其ID.使用控制台日志记录而不是alert()会更好,特别是如果你有许多带处理程序的元素. (3认同)

Bar*_*per 1

博克杜德说道:

您可能想尝试 Visual Studio 2008 及其调试 JavaScript 代码的功能。

我已经多次围绕事件处理进行了黑客攻击,在我看来,尽管经典的单步调试器对于跟踪长时间代码运行很有用,但它们不擅长跟踪事件。想象一下监听鼠标移动事件并在每个事件上闯入另一个应用程序......所以在这种情况下,我强烈建议记录。

如果问题不是 Internet Explorer 7 特有的,而是 Firefox 中也出现,那么调试 JavaScript 代码的另一种好方法是 Firefox 和具有 JavaScript 调试器的Firebug附加组件。

还有适用于 Internet Explorer 的Firebug Lite。我没有机会使用它,但它确实存在。:-) 它的缺点是它不是一个成熟的调试器,但它有一个 window.console 对象,这正是您所需要的。