2012-03-13 7 views
9
<form id="search" action="/search" method="get" autocomplete="off"> 
    <div> 
     <input type = "button" name = 'test_button" value = "test" /> 
    </div> 
</form> 

<script> 
    document.getElementById("test_button").value = "changed_test" 
</script> 

Proprio come il codice HTML qui sopra mostra, ho definito un pulsante con nome test_button e il valore test e cambiando il suo valore con il codice nel tag script.come trovare lo script che ha cambiato l'attributo value di un <input ... /> tag

Ora eseguo il debug di una pagina Web di grandi dimensioni che utilizza un meccanismo come questo che utilizza Firebug e Firefox in Linux.

Vorrei sapere come posso trovare lo script che cambia l'attributo value del <input ... />, ma la pagina web è troppo grande, vari <script> e anonimi funzioni che è auto-eseguito ha reso quasi impossibile trovare la specifica script manualmente.

Dato che sono in Linux, non posso utilizzare alcun strumento Microsoft per cercare l'intera pagina web. Ho solo Firebug e Chrome. Firebug può rendersene conto? Qualcuno ha una buona idea di come trovare lo specifico <script> che ha cambiato il value?

+1

Questo è piuttosto chiaro, e ti sembra di inviare lo script che altera il valore tasto; a parte questo, usa la funzione 'Trova' del tuo browser per scorrere le istanze della stringa 'test_button' per vedere dove viene usata. –

+1

@ Mr.Disappointment Penso che il codice sia solo un esempio che rappresenta il problema principale, e il vero documento in fase di debug è molto più grande (e probabilmente ha l'equivalente di "test_button" dappertutto). –

risposta

25

aggiungere del codice come questo per il documento, subito dopo il modulo con il tasto:

<script> 
var node = document.getElementById("test_button"); 
Object.defineProperty(node, 'value', { 
    set: function() { throw new Error('button value modified'); } 
}); 
</script> 

Questo genera un errore quando si tenta di modificare nulla del value tasto.

error log

Espandere l'errore e fare clic l'ultimo numero di riga indicato. Questo ti porterà direttamente alla linea che imposta il valore del pulsante.

offending script line

Ecco una demo: http://jsfiddle.net/XSJZN/

Testato in Chrome 17.

+2

grazie mille. quello che hai scritto è davvero molto dettagliato. ed è davvero una buona idea. ma ho bisogno di eseguire il debug di un sito web che non è stato scritto da me, perché ho bisogno di scrivere un web crawler su quel sito. Mi sono ricordato che gli strumenti di sviluppo di Chrome hanno una funzione simile. per esempio. per la riga: '', posso fare clic con il tasto destro del mouse sulla linea e scegliere, "interrompi quando modifica l'attributo", quindi aggiorna la pagina web e chrome si fermerà a tge line dove l'attributo è modificato, dosent firebug ha una funzione simile? – Searene

+0

OK, l'ho trovato in Firebug. Grazie per l'aiuto! – Searene

+2

+1 a volte non hai altra scelta che fare cose davvero pazzesche. –

Problemi correlati