2014-07-25 15 views
27

Esistono tecniche che posso utilizzare per trovare che javascript sta modificando un elemento HTML? Sto avendo qualche problema a scoprire come un particolare elemento sta ottenendo uno stile in linea di display:none aggiunto al caricamento. So che alla fine troverò la sceneggiatura, ma voglio che questo processo sia più facile.Trova javascript che sta modificando l'elemento DOM

La mia soluzione ideale sarebbe un modo di interrompere l'esecuzione di JavaScript non appena viene modificato un elemento DOM. Sono a conoscenza dell'abilità degli strumenti di sviluppo di Chrome di fare clic con il pulsante destro su un elemento e selezionare Interrompi> Modifica attributi. Tuttavia, ciò accade a volte durante il caricamento della pagina, quindi sarebbe davvero bello se potessi inserire qualche script prima di tutte le altre dichiarazioni di script che dicevano 'guarda un elemento con classe XYZ' e interrompere l'esecuzione di JS sulla modifica dell'elemento. Quindi, l'esecuzione di JS si interromperà dove posso vedere il JS che ha modificato l'elemento, o forse potrebbe essere trovato guardando lo stack di chiamate, ma in entrambi i casi, sarei in grado di vedere lo script che ha innescato l'interruzione. Ho trovato alcune risposte che mi dicono come farlo utilizzando gli strumenti di sviluppo di Chrome/Firebug, ma come ho detto, questa domanda riguarda l'approccio programmatico.

+0

Perché si noti solo ottenere tutto il JS in una directory e fare un grep per "nessuno"? –

risposta

-3

Basta posizionare il debugger ovunque all'interno del file e quando si esegue il file, il codice si fermerà sulla riga esatta che è stato inserito nel debugger. Questo ti permetterà di usare la console per sviluppatori (diciamo in chrome) e accedere a variabili diverse e parte del tuo codice più semplice.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger

+4

Se conoscesse la linea e il file esatti che stavano apportando il cambiamento, non avrebbe avuto bisogno di trovare ciò che stava apportando la modifica. –

4

è possibile utilizzare: -

document.documentElement.addEventListener('DOMAttrModified', function(e){ 
    if (e.attrName === 'style') { 
    console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue); 
    } 
}, false); 

Date un'occhiata a questo: -

Event detect when css property changed using Jquery

+0

Il violino non funziona a partire da oggi – ClayKaboom

Problemi correlati