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

    Podobnie jak kod HTML powyżej pokazuje, mam zdefiniowane przycisk z nazwą test_button i wartości test i zmieniając jego wartość z kodem w tagu skryptu.jak znaleźć skrypt, który zmienił atrybut wartość <input ... /> tagu

    Teraz debuguję dużą stronę internetową, która używa takiego mechanizmu za pomocą Firebuga i Firefoksa w Linuksie.

    Chcę wiedzieć, w jaki sposób mogę znaleźć skrypt, który zmienia atrybut <input ... />value, ale strona internetowa jest zbyt duża, różne <script> i anonimowe funkcje, które są automatycznie wykonywane stało się prawie niemożliwe, aby znaleźć konkretną script ręcznie.

    Odkąd jestem w Linuksie, nie mogę używać żadnych narzędzi Microsoftu do przeszukiwania całej strony. Mam tylko Firebuga i Chrome. Czy Firebug może to zrozumieć? Czy ktoś ma dobry pomysł, jak znaleźć konkretną <script>, która zmieniła value?

    +1

    To jest raczej niejasny i wydaje się pisać skrypt, który zmienia wartość przycisk; poza tym, użyj funkcji "Znajdź" przeglądarki, aby przechwycić wystąpienia ciągu "test_button", aby zobaczyć, gdzie jest używany. –

    +1

    @ Mr.Disappointment Myślę, że kod jest tylko przykładem reprezentującym podstawowy problem, a debugowany dokument jest znacznie większy (i prawdopodobnie ma odpowiednik "test_button" w każdym miejscu). –

    Odpowiedz

    25

    dodać trochę kodu jak ten dokument, tuż po postaci z przyciskiem:

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

    To wygeneruje błąd, gdy coś próbuje modyfikować przycisk na value.

    error log

    Rozwiń błąd i kliknij ostatni numer linii pokazany. Spowoduje to przejście do linii ustawiającej wartość przycisku.

    offending script line

    Oto demo: http://jsfiddle.net/XSJZN/

    Testowany w Chrome 17.

    +2

    thx dużo. to, co napisałeś, jest naprawdę bardzo szczegółowe. i to naprawdę dobry pomysł. ale muszę debugować stronę, która nie jest napisana przeze mnie, bo muszę napisać robota sieciowego na tej stronie. przypomniałem sobie, że chromowe narzędzia programistyczne mają taką funkcję. na przykład dla linii: '', mogę kliknąć prawym przyciskiem myszy linię i wybrać "break when the attribute modification", następnie odśwież stronę i chrome zatrzyma się na linii tge, gdzie atrybut jest zmodyfikowany, dosent firebug ma podobną funkcję? – Searene

    +0

    OK, znalazłem to w firebug. dzięki za pomoc! – Searene

    +2

    +1 czasami nie masz wyboru, tylko robić naprawdę, naprawdę szalone rzeczy. –

    Powiązane problemy