Как узнать, какая функция JavaScript вызывается в событии onclick объекта?
Как узнать, какая функция JavaScript вызывается при событии onclick у объекта? Ещё лучше, можно ли выяснить, в каком файле .js находится эта функция?
4 ответ(ов)
Вы не сможете узнать, из какого файла вызывается событие onclick
, но myObject.onclick
вернет вам функцию, которая вызывается. И да, для этого вам не нужен jQuery.
Что касается получения имени функции, то это немного сложнее. Вы можете попробовать что-то вроде этого:
var myFunc = myObject.onclick, myFuncName = "";
for (var prop in window) {
if (window.hasOwnProperty(prop) && window[prop] === myFunc) {
myFuncName = prop; // теперь myFuncName содержит имя функции. Это сработает только в том случае, если вы не присвоили анонимную функцию обработчику клика.
break;
}
}
Но честно говоря, я думаю, что это немного излишне.
Это зависит от того, как именно событие event
привязано.
Если вы используете onclick
без каких-либо библиотек, таких как jQuery, вы можете сделать следующее:
var obj = document.getElementById('elementId');
console.log(obj.onclick);
Этот код выведет в консоль функцию, привязанную к событию onclick
элемента с идентификатором elementId
.
У вас интересный подход. Вы перегружаете функцию onclick
и добавляете отладчик перед выполнением основной функции. Вот как это можно сделать:
Предположим, у вас есть элемент:
<div id="div1"></div>
Вы можете ввести следующий JavaScript в консоли разработчика:
var clickFn = $("#div1").click;
$("#div1").click(function(){
debugger;
clickFn.call(this);
});
Сначала мы сохраняем оригинальную функцию click
в переменной clickFn
. Затем мы устанавливаем новую функцию обработки события click
для #div1
. В новой функции сначала вызывается debugger
, а затем вызывается оригинальная функция click
, используя call(this)
для сохранения контекста.
Таким образом, когда вы нажимаете на элемент, выполнение останавливается на строке debugger
, и вы можете исследовать состояние в этот момент.
В JavaScript метод toString
для функции возвращает её код в виде строки. Это можно увидеть следующим образом:
var button = document.getElementById("button");
button.onclick.toString(); // "function handleClick() { alert(1); }"
При вызове toString
у обработчика события onclick
, вы получите строковое представление функции, содержащей код внутри. Это может быть полезно для отладки или анализа кода функции. Однако стоит помнить, что формат возвращаемой строки может варьироваться в зависимости от реализации JavaScript-движка.
Как перенаправить на другую веб-страницу?
Где найти документацию по форматированию даты в JavaScript?
Как определить нажатие клавиши Esc?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub