Можно ли воссоздать событие onClick, используя пользовательские события в javascript?

Я пытаюсь узнать о пользовательских событиях, и я стало любопытно. Не могли бы вы создать событие onClick дословно, но записанное в пользовательском событии?

пример создать элемент:

<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


person Armeen Harwood    schedule 29.11.2015    source источник
comment
Как указано в ошибке, функция process, определенная в вашем обработчике, не определена. (obj.addEventListener("fakeClick", function(e) { **process**(e.detail) });)   -  person Selvakumar Arumugam    schedule 30.11.2015
comment
замените process(e.detail) на console.log(e.detail) и получайте удовольствие   -  person Roko C. Buljan    schedule 30.11.2015
comment
@RokoC.Buljan, поэтому я заменил на console.log(), и больше нет ошибок. Проблема в том, что элемент #clicky не кликабельный?   -  person Armeen Harwood    schedule 30.11.2015
comment
@MatthewHarwood уверен, что это не кликабельно. Вы только что создали пользовательское событие, а не кликабельное событие. Прочтите developer.mozilla.org/en-US/docs/ Интернет/Руководство/События/   -  person Roko C. Buljan    schedule 30.11.2015


Ответы (1)


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

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

========== подробнее =========

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

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) });
person Natural Lam    schedule 29.11.2015
comment
Как бы я использовал обработчик события клика. Я, вероятно, никогда не буду этого делать, просто любопытно, если это возможно. - person Armeen Harwood; 30.11.2015
comment
@MatthewHarwood вы читали: developer.mozilla.org/en- США/docs/Web/Guide/Events/ ? Это все есть. - person Roko C. Buljan; 30.11.2015
comment
Только что связался. Читаю сейчас... Я вижу, что есть MouseEvent. Я проверю это. - person Armeen Harwood; 30.11.2015
comment
добавил больше деталей в мой ответ @MatthewHarwood - person Natural Lam; 30.11.2015