Обновление: Как найти слушателей события на узле DOM в прототипе?

Обычно Вы просили бы у контроллера своего приложения эту информацию, и это будет ответственно за знание, как сохранить его, это в любой модели данных существует. Контроллер Вашего приложения может или не может совпасть с делегатом приложений (в большинстве простых приложений, это - то же).

6
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Я обновил ответ , который вы связали с , с более подробным описанием Прототипа с учетом изменений в версиях 1.6.0 to 1.6.1 .

Там было очень запутано, но 1.6.1 несколько чистая:

var handler = function() { alert('clicked!') };
$(element).observe('click', handler);

// inspect
var clickEvents = element.getStorage().get('prototype_event_registry').get('click');
clickEvents.each(function(wrapper){
    alert(wrapper.handler) // alerts "function() { alert('clicked!') }"
})
7
ответ дан 8 December 2019 в 18:39
поделиться

Теперь данные маршрутизируются через хранилище элементов :)

Element.getStorage (yourElement) .get ('prototype_event_registry') предоставит вам экземпляр Hash Prototype. 117199], так что вы можете делать все, что бы вы делали с хешем.

// to see which event types are being observed
Element.getStorage(yourElement).get('prototype_event_registry').keys();

// to get array of handlers for particular event type
Element.getStorage(yourElement).get('prototype_event_registry').get('click');

// to get array of all handlers
Element.getStorage(yourElement).get('prototype_event_registry').values();

// etc.

Обратите внимание, что это недокументированные внутренние детали , которые могут быть изменены в будущем, поэтому я бы не стал на них полагаться, за исключением, возможно, в целях отладки.

6
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: