У меня есть веб-ui с классом, который действует как посредник между несколькими возможными событиями и несколькими возможными слушателями, а не только одним. Объект-посредник регистрирует свою специальную функцию в событии как обычный прослушиватель, который затем может перебирать все возможные слушатели. Если на событии уже зарегистрирован слушатель до того, как медиатор запустил его, он будет помещен в внутренние списки объектов посредника, подобный другим слушателям регистра, заставляя его вызываться на любом зарегистрированном событии.Как получить доступ к названию активированного события из функции слушателя?
Поскольку объект-посредник принимает всех предыдущих слушателей, если есть какое-либо событие для данного события, он будет вызывать их всех. Это происходит, даже если это не оригинальное событие, которое срабатывает, но одно из других нескольких событий с зарегистрировано и на объекте посредника.
Чтобы предотвратить это, Мне нужно знать событие, из-за которого его слушатель (ы) вызывается. Например. когда window.onclick
пожаров, я хочу знать, что это window.onclick
. То, что у меня до сих пор, является объектом, из которого происходит событие (через это ключевое слово), которое в этом конкретном случае составляет window
. Как я могу получить доступ к этой информации и это можно сделать в виде кросс-браузера?
Для того, чтобы проиллюстрировать, как это зловещее посредник «класс», называемый также CallbackHandler
, фактически используется:
// potential listener-functions
var callMeBaby = function() { console.log("Ya called me, Baby!"); };
var callMeWilhelm = function() { console.log("Ya called me, Wilhelm!"); };
var callMeMaybe = function() { console.log("Ya called me, maybe..."); };
// first listener assigned
window.onclick = callMeBaby;
// create 2 CallbackHandler-objects
// they use the same event window.onclick
// myButton.onclick is registered on anotherCH exlusively
// the previous listener window.onclick = callMeBaby will be included in windowOnClickCH
// windowOnClickCH.callback (the new listener) will replaced by anotherCH.callback as well
var windowOnClickCH = new Utilities.CallbackHandler();
windowOnClickCH.addSender(window, "onclick");
var anotherCH = new Utilities.CallbackHandler();
anotherCH.addSender(window, "onclick");
anotherCH.addSender(document.getElementById("myButton"), "onclick");
// register callback-function on the CallbackHandler-objects
windowOnClickCH.addReceiver(callMeWilhelm);
anotherCH.addReceiver(callMeMaybe);
Это приведет к более менее этих консольных журналов:
Ya called me, Baby!
Ya called me, Wilhelm!
Ya called me, maybe...
Спасибо заранее!
Будет ли цель мероприятия работать? 'var callMeMaybe = function (event) {console.log (« Я позвонил мне, может быть ... »); console.log (event.target); }; 'Возможно, вам придется добавить объект события где-то в медиа-посреднике, но, таким образом, он будет передан функции. – Shilly
@Shilly Event.target не будет делать, к сожалению. По-прежнему приятно знать, где пользователь нажал на пример onclick, но он не сообщает посреднику, ака '' CallbackHandler', что ему нужно. –
Mh, сам объект события имеет тип, доступ к которому осуществляется через, например, '' eventObj.type''. Для стандартных-onlick-событий это становится '' "click" ''. Является ли этот тип события уникальным для каждого элемента dom? Когда есть '' myObject.onclick'' с типом события '' click'', возможно ли это, например. '' myObject.onClickfest'' с тем же типом события? –