javascript
  • html
  • firebug
  • 2012-03-13 21 views 9 likes 
    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> 
    

    Del mismo modo que el código HTML anterior muestra, he definido un botón con el nombre test_button y el valor test y cambiar su valor con el código en la etiqueta script.cómo encontrar script que cambia el atributo de valor de una variable <input ... />

    Ahora estoy depurando una gran página web que está utilizando un mecanismo como este usando Firebug y Firefox en Linux.

    Quiero saber cómo puedo encontrar el script que cambia el atributo value del <input ... />, pero la página web es demasiado grande, varias <script> y anónimas funciones que se auto-ejecutado hace que sea casi imposible encontrar la específica script a mano.

    Como estoy en Linux, no puedo usar ninguna herramienta de Microsoft para buscar en toda la página web. Solo tengo Firebug y Chrome. ¿Puede Firebug darse cuenta de eso? ¿Alguien tiene una buena idea de cómo encontrar el <script> específico que cambió el value?

    +1

    Esto es bastante claro, y parece que para publicar la secuencia de comandos que altera el valor del botón; Aparte de eso, use la función 'Buscar' de su navegador para recorrer las instancias de la cadena 'test_button' para ver dónde se usa. –

    +1

    @ Mr. Dispointment Creo que el código es solo un ejemplo que representa el problema central, y el documento real que se está depurando es mucho más grande (y probablemente tenga el equivalente de "test_button" por todas partes). –

    Respuesta

    25

    añadir algo de código como este para el documento, justo después de la forma con el botón:

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

    Esto generará un error cuando se intenta modificar nada de value el botón.

    error log

    Expandir el error y haga clic en el último número de línea se muestra. Esto lo llevará directamente a la línea que establece el valor del botón.

    offending script line

    He aquí una demostración: http://jsfiddle.net/XSJZN/

    Probado en Chrome 17.

    +2

    thx mucho. lo que has escrito es realmente muy detallado. y de hecho es una buena idea. pero necesito depurar un sitio web que no haya sido escrito por mí, ya que necesito escribir un rastreador web en ese sitio web. recordé que las herramientas de desarrollo de Chrome tienen esa función. p.ej. para la línea: '', puedo hacer clic con el botón derecho en la línea y elegir "romper cuando la modificación del atributo", luego actualizar la página web y cromo se detendrá en la línea tge donde se modifica el atributo, dosent firebug tiene una función similar? – Searene

    +0

    OK, lo encontré en Firebug. ¡gracias por tu ayuda! – Searene

    +2

    +1 a veces no tienes más remedio que hacer cosas realmente locas. –

    Cuestiones relacionadas