2010-09-19 87 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