Есть ли способ отследить вызов функции 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");
}
}