【问题标题】:How do I find which JavaScript is changing an element's style?如何找到哪个 JavaScript 正在改变元素的样式?
【发布时间】:2010-08-03 22:42:57
【问题描述】:

我有一个通过 JavaScript 应用样式的元素。我不确定到底在哪里;有没有办法检查 Firebug 以显示“element.style”的实际来源?

【问题讨论】:

标签: javascript jquery css debugging firebug


【解决方案1】:

如果您确定它是在内联 style 上设置的,而不是作为样式表规则的结果,您可以使用非标准 Mozilla watch() 方法检测更改:

document.body.style.watch('color', function(name, v0, v1) {
    alert(name+': '+v0+'->'+v1);
});
document.body.style.color= 'red';

您可以将debugger; 放入观察器函数中,然后在 Firebug 中查找调用堆栈以查看触发更改的位置。

【讨论】:

  • 谁能告诉我们我们在做什么/我们把上面的代码放在哪里?
  • @user1794295 在 jQuery 的 $(document).ready(function() { /* 你的代码放在这里 */ });或类似的东西
  • 自 FF 58 起删除。
【解决方案2】:

this question的要求:

如果您有 Firefox,您可以在 HTML 选项卡中选中“属性更改中断”选项。只需右键单击目标元素,就会弹出菜单。之后,调整窗口大小,它将在更改属性的脚本行中中断。

【讨论】:

  • 我看不到“属性更改中断”选项。
  • 该菜单与当前的 FireFox 完全不同,并且没有任何“Break On”操作。
【解决方案3】:

您也可以在设置样式之前右键单击 HTML 面板中的元素,然后在属性更改上选择中断。必须启用脚本面板。

【讨论】:

  • 我看不到“Break On Attribute Change”选项。
【解决方案4】:

我认为这是这项工作的默认工具,尽管它的调试功能有限:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

另外,请确保广告拦截器不负责。

【讨论】:

  • 是的,如果样式更改为显示,请暂停广告拦截器:“无”。我遇到的问题是 img 没有显示并且文件名/网址包含“广告”。
【解决方案5】:

您可以打开脚本视图并在搜索框中搜索“.style”。

【讨论】:

  • 这只适用于非常有限的情况——尤其是在使用 jQuery 的情况下。
  • @Brock Adams:没错,但也可以搜索.css ;)
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2016-03-02
  • 2013-03-15
  • 2022-01-16
相关资源
最近更新 更多