检测javascript函数在加载时更改页面元素的内容?

时间:2010-02-24 22:32:40

标签: javascript html firebug break

我有很多在页面加载时运行的jquery,它导致我的一个元素消失(使它成为style = display:none;)。我猜错了jquery hide()函数正在应用于这个元素,但是我找不到导致它的语句。

是否有任何javascript,firebug等功能或工具基本上充当html元素的断点/监听器(也许我可以在浏览器中运行)?很高兴看到哪个函数在页面加载时影响该元素。

2 个答案:

答案 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__]时,您将返回该值