是否可以使用 javascript 中的自定义事件重新创建"onClick event"?



我正在尝试了解自定义事件,我很好奇。你能逐字逐句地创建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

这取决于您将其设置为"与单击事件相同"的意思。当您调用dispatchEvent时,自定义事件会激发到相应的Dom元素(就像您上面所做的那样)。因此,基本上,如果u在点击事件处理程序中调度自定义事件,那么它基本上模拟点击事件,但似乎没有太多理由这样做。

p.s.u从fiddle得到的错误是因为你没有定义你在fakeClick事件处理程序中调用的函数process

================更多详细信息=============

我的意思是,你可以按照以下方式使用自定义事件来"模拟"点击事件,但这并不能达到目的,因为你只能直接使用浏览器点击事件。

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) });

最新更新