2009-08-10 7 views
21

Irgendwo irgendwo in meinem Code eines der Elemente auf der Seite bekommt ein Stil-Attribut, das ich nicht erwarte es zu bekommen. Es wird nämlich style = "position: fixed". Ich kann sehen, dass dies in der Registerkarte HTML in Firebug passiert, aber ich kann es nicht im Code finden. Die Anwendung ist ziemlich groß und ich kann nicht einfach den ganzen Code durchsehen, um den Platz zu finden, außerdem werden mehrere Drittanbieter-Bibliotheken verwendet (jQuery ist eine davon).DOM Attribut Änderung Debugging

Also, meine Frage ist, ist es möglich, irgendwie diesen Stil zu bekommen, der geändert wird, und die Spur zu bekommen?

Antwort

10

Nun, nach ein paar Stunden googeln und experimentieren, so scheint es, dass das beste Setup es tun können, einen MutationEvent Handler (Firefox sie unterstützt) wie folgt aus:

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); 

Ein dann einrichten eine Art von Protokollierung in Ihrem Code und sehen, wann dieses Ereignis ausgelöst wird. Leider können Sie im Mutationsereignishandler nicht einfach einen Haltepunkt einrichten und die Stacktrace anzeigen, da die Stacktrace des Ereignishandlers keine Informationen über die Stelle im Code enthält, an der das Ereignis ausgelöst wurde. Irgendwie logisch, aber ich denke, dass mit etwas Hacking diese Funktion in Firebug implementiert werden kann.

Vielen Dank für Ihre Zeit!

0

Klingt, als ob Sie wirklich einen Debugger benötigen. Firebug has one built in, sonst kann man Venkman einen Versuch geben, was ich etwas umständlicher finde aber vielleicht effektiver ist ..

Viel Glück! :)

+1

Nun, ich benutze Firebug, aber ich kann keinen Weg finden, Break-Point an der Stelle zu setzen, wo Attribut geändert wird, weil ich nicht weiß, wo es ist und finde es genau, was ich hier will .. –

19

Klicken Sie in Google Chrome mit der rechten Maustaste auf ein Element auf der Seite und wählen Sie "Element prüfen". Das Developer Tools-Fenster oder Fenster wird mit dem in der Quellansicht ausgewählten Element geöffnet. Sie können dann mit der rechten Maustaste auf das ausgewählte Tag klicken und "Änderungen an Attributen ändern" auswählen.

+0

Funktioniert nicht beim erneuten Laden der Seite oder beim Ändern der Ansichten in Angular. – Sammi

2

Im HTML-Inspektor von Firebug können Sie mit der rechten Maustaste auf einen Knoten klicken und es gibt eine Option, bei Attributänderungen zu unterbrechen.

Breakpoints bleiben beim erneuten Laden der Seite erhalten, und Sie können auch den Call Stack durchsuchen.

Verwandte Themen