上周我们在上周左右的修补和测试后将 Omniture 的分析代码发布到大量网站上。
在我们几乎所有的网站模板上,它都运行良好。在一些零星的、不可预测的情况下,严重的浏览器崩溃体验可能会让一些用户望而却步。
此时我们无法看到崩溃模板之间的关系,虽然有很多方法可以解决问题,但让我们感到困惑的是事件监听器。
单击这些模板上的任何 anchor 时,网站会崩溃。没有任何内联 JS,虽然我们通过 HTML 的属性进行了调试,但我们找不到可识别的循环或会导致此问题的问题。 (在我们进行故障排除时,您可以亲 body 验 here [警告!单击页面中的任何链接都会导致浏览器崩溃!])
如何确定对象是否有监听器?您如何确定触发事件时将触发什么?
FYI, I'd love to set breakpoints, but between Omnitures miserably obfuscated code and repeated browser crashes, I'd like to research more thoroughly how I can approach this.
最佳答案
我在那个页面的链接上用 Firebug 做了一个“检查元素”,在 DOM 选项卡中它说有一个 onclick 函数(匿名),还有一些其他函数叫做“s_onclick_0”。
我哄着 Firebug 放置了一个像 watch 一样
alert(document.links[0].onclick)
提醒我 omniture(我猜)附加到链接的 onclick 函数:
function anonymous(e) {
var s = s_c_il[0], b = s.eh(this, "onclick");
s.lnk = s.co(this);
s.t();
s.lnk = 0;
if (b) {
return this[b](e);
}
return true;
}
也许以同样的方式你可以看到在所有的混淆之后它真正运行的是什么。
关于javascript - 掌握 JavaScript 中的事件监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/174891/