2010-09-19 86 views

回答

6

如果您必须检测到更改,则可以检查DOM突变事件。 DOM events wikipedia page列出他们全部。但是,您应该知道它们在Internet Explorer中不受支持,并且可能在支持它们的浏览器中经常触发。蛮力方法是使用setTimeout并自行检查更改。

虽然我的经验表明,可以避免需要DOM更改通知。你能否提供关于你确切需求的更多细节?

+0

我想让用户通过单击元素来更改页面上任何元素的颜色。当点击点已知时,我想要扫描DOM中驻留在点击点处的所有元素,并让用户决定要更改其颜色的元素。由于可以在此页面上添加和删除元素,因此看起来我必须在每次点击时扫描DOM。我认为缓存变量中的所有DOM元素,并在DOM发生变化时更改此变量。 – 2010-09-19 14:23:25

+0

@MishaMoroshko AFAIK你可以使用event.target来知道哪个节点被点击了。所以你可以将事件附加到'documentElement'本身。 – 2012-09-29 04:47:37

4

根据您希望收听的更改类型,您可以附加许多DOM事件。这里是所有的DOM变化活动的网页:

https://developer.mozilla.org/en/DOM_Events

通用的,包罗万象的DOM变化事件DOMSubtreeModified。例如:

document.getElementById('abc').addEventListener('DOMSubtreeModified', f, false); 
2

不幸的是,没有内置的事件被广泛支持。不过,您可以使用名为livequery的jQuery插件。

+0

他们很棒,但没有得到适当的支持。我宁愿救自己的麻烦,并使用测试插件。 – 2010-09-19 06:38:08

+0

使用库禁止标准开发的需求,并阻止用户从例如IE浏览器。 – 2010-09-19 06:51:31

+4

@Delan这些都是非常错误的假设 - Javascript库抽象出浏览器实现DOM中的差异,并帮助创建一个可以开发的基线,而不是花费时间来消除跨浏览器兼容性问题。在IE上打破你的网站不会阻止人们离开IE,只是人们访问你的网站,并不会帮助任何人。 – 2010-09-19 07:04:33