2015-11-29 2 views
0

Я пытаюсь узнать о custom events, и мне стало любопытно. Не могли бы вы создать событие onClick дословно, но написанное в пользовательском событии?Возможно ли воссоздать событие onClick с использованием пользовательских событий в javascript?

ex. создать элемент:

<h1 id="clicky">click here</h1> 

Создать пользовательское событие, которое так же, как событие щелчка?

obj = document.getElementById('clicky'); 

obj.addEventListener("fakeClick", function(e) { console.log(e.detail) }); 


var event = new CustomEvent("fakeClick", { 
    detail: { 
    hazcheeseburger: true 
    } 
}); 

obj.dispatchEvent(event); 

Херес JSFiddle

+0

Как заявляет ошибка, функция 'process', определенная в вашем обработчике, не определена. ('obj.addEventListener (" fakeClick ", function (e) {** process ** (e.detail)});') –

+0

заменить 'process (e.detail)' на 'console.log (e.detail) 'и получайте удовольствие –

+0

@ RokoC.Buljan, поэтому я заменил console.log() и yay больше не ошибкой. Проблема в том, что элемент #clicky не доступен для кликов? –

ответ

1

это зависит от того, что вы имеете в виду, сделав его "такой же, как событие щелчка. Пользовательский огонь события соответствует соответствующему элементу Dom при вызове dispatchEvent (как то, что вы делали выше). Таким образом, в основном, если u отправляет пользовательское событие в обработчик события щелчка, тогда он в основном имитирует событие щелчка, но, похоже, для этого не так много причин.

p.s. Ошибка у меня из скрипки, потому что у не определила функцию process, что и вызываются в обработчике события fakeClick

========== больше деталей =========

Что я имел в виду, так это то, что вы можете использовать настраиваемое событие следующим образом, чтобы «имитировать» событие click, но это действительно не служит цели, поскольку вы можете прямо использовать событие click для браузера.

var event = new CustomEvent("fakeClick", { 
    detail: { 
    hazcheeseburger: true 
    } 
}); 

obj = document.getElementById('clicky'); 

obj.addEventListener("click", function() { 
    this.dispatchEvent(event); 
}); 

obj.addEventListener("fakeClick", function(e) { console.log(e.detail) }); 
+0

Как использовать «обработчик события клика». Я, наверное, никогда не сделаю этого просто любопытным, если это возможно. –

+0

@MatthewHarwood вы читали: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events? Это все. –

+0

Только что связался. Читай сейчас ... Я вижу, что есть MouseEvent. Я проверю это. –

Смежные вопросы