Есть ли способ отследить вызов функции javascript?

Мне нужен окончательный способ выяснить, что Javascript изменяет значение формы? Лучшее, что я смог сделать, это:

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

но значение не было изменено точкой, которую это выполняет.

4 ответов


есть новый способ сделать это в Chrome и Firefox: console.trace

смотрите здесь:

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

в веб-инспектор:

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

Итак, чтобы изменить принятый ответ:

$('input#myInputAbove').change(function(){
    console.trace(); // No breakpoint needed anymore.
});

вставьте это непосредственно под HTML элемента формы, который вы хотите проследить:

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

используйте FireBug для вставки точка останова в вышеуказанный метод JS. Нажми на нее и посмотри на stacktrace.


ниже показано, какие обработчики событий были привязаны к элементу:

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

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"); 
    }
 }