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