2009-08-10 11 views
21

Jakoś gdzieś w moim kodzie jeden z elementów na stronie dostaje atrybut stylu, którego nie oczekuję. Mianowicie otrzymuje on styl = "position: fixed". Widzę to na karcie HTML w Firebug, ale nie mogę go znaleźć w kodzie. Aplikacja jest dość duża i nie mogę po prostu przejrzeć całego kodu, aby znaleźć to miejsce, poza tym jest używanych kilka bibliotek zewnętrznych (jQuery jest jednym z nich).Zmiana atrybutów atrybutów DOM

Moje pytanie brzmi, czy można w jakiś sposób złapać ten styl, który został zmieniony i uzyskać ślad?

Odpowiedz

10

Cóż, po kilku godzinach googlowania i eksperymentowanie, wydaje się, że najlepiej można to zrobić setup do MutationEvent obsługi (Firefox wspiera je) tak:

var node_modified = function(evt) { 
    if(evt.attrName == 'style') { 
     alert('Style is changing from ' + evt.prevValue + ' to ' + evt.newValue); 
    } 
} 
var test_close = document.getElementById('test_close'); 
test_close.addEventListener('DOMAttrModified', node_modified, false); 

następnie skonfigurować jakiś rodzaj logowania w całym kodzie i zobacz, kiedy to zdarzenie zostanie uruchomione. Niestety, nie można po prostu ustawić punktu przerwania w procedurze obsługi zdarzenia mutacji i zobaczyć śledzenia stosu, ponieważ ślad stosu procedury obsługi zdarzeń nie zawiera informacji o miejscu w kodzie, w którym zdarzenie zostało wywołane. Niby logiczne, ale myślę, że z hackowaniem ta funkcja może zostać zaimplementowana w Firebug.

Dziękuję za poświęcony czas!

0

Wygląda na to, że naprawdę potrzebujesz debuggera. Firebug has one built in, w przeciwnym razie możesz dać Venkman spróbować, co uważam za nieco bardziej uciążliwe, ale być może jest bardziej skuteczne ..

Powodzenia! :)

+1

Cóż, używam Firebuga, ale nie mogę znaleźć sposobu na ustawienie punktu przełamania w miejscu, w którym atrybut się zmienia, ponieważ nie wiem, gdzie on jest, i znalezienie go jest dokładnie tym, czego chcę tutaj .. –

19

W przeglądarce Google Chrome kliknij prawym przyciskiem myszy element na stronie i wybierz "Sprawdź element". Zostanie otwarte okno lub panel Narzędzia dla programistów z tym elementem wybranym w widoku źródłowym. Następnie możesz kliknąć prawym przyciskiem myszy wybrany znacznik i wybrać "Przerwij modyfikacje atrybutów".

+0

Nie działa podczas przeładowywania strony lub podczas zmiany widoków w ustawieniu kątowym. – Sammi

2

W kontrolerze haseł Firebug można kliknąć prawym przyciskiem myszy węzeł i istnieje możliwość przerwania zmiany atrybutu.

Punkty przerwania trwają po przeładowaniu strony i można również przeglądać stos wywołań.