0

Как узнать, какая функция JavaScript вызывается в событии onclick объекта?

2

Как узнать, какая функция JavaScript вызывается при событии onclick у объекта? Ещё лучше, можно ли выяснить, в каком файле .js находится эта функция?

4 ответ(ов)

0

Вы не сможете узнать, из какого файла вызывается событие 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;
    }
}

Но честно говоря, я думаю, что это немного излишне.

0

Это зависит от того, как именно событие event привязано.

Если вы используете onclick без каких-либо библиотек, таких как jQuery, вы можете сделать следующее:

var obj = document.getElementById('elementId');
console.log(obj.onclick);

Этот код выведет в консоль функцию, привязанную к событию onclick элемента с идентификатором elementId.

0

У вас интересный подход. Вы перегружаете функцию 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, и вы можете исследовать состояние в этот момент.

0

В JavaScript метод toString для функции возвращает её код в виде строки. Это можно увидеть следующим образом:

var button = document.getElementById("button");

button.onclick.toString(); // "function handleClick() { alert(1); }"

При вызове toString у обработчика события onclick, вы получите строковое представление функции, содержащей код внутри. Это может быть полезно для отладки или анализа кода функции. Однако стоит помнить, что формат возвращаемой строки может варьироваться в зависимости от реализации JavaScript-движка.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь