4

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

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

4

2 回答 2

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/

谢谢你们的尝试!

于 2010-02-25T18:26:02.043 回答
1

您可以找到使用 getter/setter 访问元素的位置。但是,setter 方法似乎不适用于 chrome ......它适用于最新版本的雷区 [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__] 时,您会返回该值

于 2010-02-24T23:28:36.770 回答