我有很多在页面加载时运行的jquery,它导致我的一个元素消失(使它成为style = display:none;)。我猜错了jquery hide()函数正在应用于这个元素,但是我找不到导致它的语句。
是否有任何javascript,firebug等功能或工具基本上充当html元素的断点/监听器(也许我可以在浏览器中运行)?很高兴看到哪个函数在页面加载时影响该元素。
答案 0 :(得分:4)
哈!我刚刚找到了我想要的答案。 Firebug在HTML选项卡上有一个“break on mutate”功能,它将显示javascript文件中哪一行正在更改html元素。它是在Firebug 1.5中,今天发布的新的1.5.2更新移动了图标,所以我注意到了它并且发现它纯粹是运气!
http://www.softwareishard.com/blog/firebug/firebug-15-break-on-next/
感谢您的尝试!
答案 1 :(得分:1)
您可以使用getter / setter查找元素的访问位置。但是,setter方法似乎不适用于chrome ...它适用于最新版本的minefield [firefox beta],但是......所以你可以测试一下我猜=)
myElement.style.__defineSetter__("backgroundColor", function(val)
{
var cur = arguments.callee;
var callLog = "";
while(cur != null)
{
callLog = cur.caller + "\n" + callLog;
//alert(cur.caller);
cur = cur.caller;
}
alert(callLog);
}
);
哦,但它不会让你真正“设置”变量。要做到这一点,你定义一个虚拟变量并设置它。然后,当您定义getter [with __defineGetter__
]时,您将返回该值