Czy istnieje prosty sposób sprawdzenia, kiedy DOM został zmieniony?Jak rozpoznać, kiedy DOM został zmieniony?
Czy istnieje jakieś wbudowane zdarzenie/funkcja JavaScript/jQuery?
Czy istnieje prosty sposób sprawdzenia, kiedy DOM został zmieniony?Jak rozpoznać, kiedy DOM został zmieniony?
Czy istnieje jakieś wbudowane zdarzenie/funkcja JavaScript/jQuery?
Jeśli musisz wykryć zmiany, możesz sprawdzić zdarzenia mutacji DOM. DOM events wikipedia page wymienia je wszystkie. Powinieneś jednak wiedzieć, że nie są one obsługiwane w Internet Explorerze i mogą uruchamiać się zbyt często w przeglądarkach, które je obsługują. Metoda brutalnej siły polega na użyciu setTimeout
i samodzielnym sprawdzaniu zmian.
Moje doświadczenie pokazuje jednak, że można uniknąć potrzeby powiadomienia o zmianie DOM. Czy mógłbyś podać więcej szczegółów na temat swoich dokładnych wymagań?
Możesz dołączyć do wielu zdarzeń DOM w zależności od rodzaju zmiany, której chcesz słuchać. Oto strona ze wszystkimi wydarzeniami zmian DOM:
https://developer.mozilla.org/en/DOM_Events
Ogólny, catch-all wydarzenie zmiana DOM jest DOMSubtreeModified
. Na przykład:
document.getElementById('abc').addEventListener('DOMSubtreeModified', f, false);
Nie ma wbudowanego wydarzenia, które jest niestety powszechnie obsługiwane. Możesz jednak użyć wtyczki jQuery o nazwie livequery.
Są świetne, ale nie są odpowiednio obsługiwane. Wolałbym zaoszczędzić sobie trudu i użyć przetestowanej wtyczki. –
Korzystanie z bibliotek hamuje zapotrzebowanie na tworzenie standardów, a także ogranicza przepływ użytkowników do Internet Explorer. –
@Delan Są to bardzo błędne założenia - biblioteki JavaScript usuwają różnice w implementacji DOM przeglądarki i pomagają stworzyć linię bazową, z którą można się rozwijać, zamiast spędzać czas na rozwiązywaniu problemów związanych z kompatybilnością przeglądarek. Łamanie witryny w IE nie powstrzyma ludzi odejścia od IE, tylko osób odwiedzających Twoją witrynę i nikomu nie pomoże. –
Chcę umożliwić użytkownikowi zmianę koloru dowolnego elementu na stronie, klikając element. Gdy znany jest punkt kliknięcia, chcę zeskanować DOM dla wszystkich elementów znajdujących się w punkcie kliknięcia i pozwolić użytkownikowi zdecydować, który element chce zmienić kolor. Ponieważ elementy można dodawać i usuwać na tej stronie, wygląda na to, że muszę skanować DOM przy każdym kliknięciu. Myślałem, że cache wszystkie elementy DOM w zmiennej i zmienić tę zmienną, gdy zmienia się DOM. –
@MishaMoroshko AFAIK można użyć event.target, aby wiedzieć, który węzeł został kliknięty. Możesz więc dołączyć wydarzenie do samego dokumentu "documentElement". –