2012-02-12 12 views
6

Potrzebuję ostateczny sposób, aby dowiedzieć się, co JavaScript modyfikuje wartość formularza? Najlepsze, co udało mi się zrobić, to:Czy istnieje sposób, aby prześledzić wywołanie funkcji javascript?

$(function(){ 
    console.log($("input[name=Email]").val()); 
}); 

Ale wartość nie została zmieniona przez punkt, w którym to się wykonuje.

+1

jest to dla debugowania? jeśli tak, może użyć narzędzi programistycznych przeglądarki, aby ustawić punkt przełomowy i przejść przez kod? –

+0

to zostanie wykonane, gdy dom załadowany .. jest to, że chcesz? –

+0

To nie jest mój kod, a przynajmniej nie mogę zlokalizować jego położenia w setkach linii. Jeśli zamieniam moją wersję jQuery z wersji 1.3.2 (obecnie witryna jest na) do wersji 1.7.1, dane wejściowe zaczynają się zmieniać. –

Odpowiedz

9

Jest nowy sposób to zrobić w Chrome i Firefox: console.trace

Zobacz tutaj:

https://developer.mozilla.org/en-US/docs/Web/API/console.trace

W przeglądarce internetowej:

> console.trace() 
console.trace() VM251:2 
(anonymous function) VM251:2 
InjectedScript._evaluateOn VM223:581 
InjectedScript._evaluateAndWrap VM223:540 
InjectedScript.evaluate VM223:459 
undefined 

więc zmodyfikować przyjętą odpowiedź:

$('input#myInputAbove').change(function(){ 
    console.trace(); // No breakpoint needed anymore. 
}); 
-1
prev_value = document.getElementByName('Email').value; 

$("input[name=Email]").change(function(){ 
    var cur_value = document.getElementById('Email').value; 
    if(cur_value != prev_value){ 
     alert("Value changed"); 
    //or console.log("Value changed"); 
    } 
} 
+0

Potrzebuję sposobu, aby dowiedzieć się, co oznacza modyfikowanie wartości, a nie to, że jest modyfikowana. –

+1

@BenDauphinee Nie jest to trudne do -1, gdy próbuję ci pomóc, nawet jeśli nie rozumiałem cię dobrze. możesz po prostu nie przyjąć mojej odpowiedzi – ParPar

+3

Nie używam downwote jako osobistego ataku. Jest to zgodne z wytycznymi, aby udzielić odpowiedzi, która nie jest poprawna dla pytania. Zobacz http://meta.stackexchange.com/a/112664 –

2

Włóż to bezpośrednio poniżej HTML elementu formularza, które chcesz śledzić:

$('input#myInputAbove').change(function(){ 
    console.log('change detected'); // Breakpoint on this line 
}); 

Zastosowanie FireBug wstawić breakpoint do powyższego JS metody. Uderz go i spójrz na stos stosu.

1

Poniższa pokaże, jakie wydarzenie koparki zostały zobowiązane do elementu:

$.each($("input[name='Email']").data('events'), function(i, event){ 
    $.each(event, function(i, handler){ 
     console.log(handler.handler); 
    }); 
}); 
+0

Niestety, nie '.fn', ale' .handler' – osahyoun

Powiązane problemy