触发和捕获自定义事件 [英] Firing and capturing custom events
本文介绍了触发和捕获自定义事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
想象一下这个场景(它实际上只是一个场景):
imagine this scenario (it's really just a scenario):
- 我有一个全局计数器,每次点击鼠标都会增加。
- 当我达到50次点击时,我想要触发一个名为gotCount的自定义事件
- 我想注册我的窗口对象来捕获该事件类似于
window.addEventListener('reachCount',function(args){alert(args.count);},false)
- I have a global counter that gets incremented on every mouse click.
- when i reach 50 clicks, i want to fire a custom event named 'reachedCount'
- I want to register my window object to capture that event with something like
window.addEventListener('reachedCount', function(args){alert(args.count);}, false)
所以,我的问题是我不知道,并且无法在任何地方找到我如何将参数传递给我的eventHandler。此外,我曾尝试过Rikudo发布的方法,但它在IE lt 9中不起作用。
So, my problems are that i don't know, and can't find anywhere how i can pass arguments to my eventHandler. Also, i had tried the method Rikudo posted, but it doesn't work in IE lt 9.
这可能吗?如何?
推荐答案
使用Rikudo Sennin的答案,你可以通过将参数放入事件本身来将参数传递给事件处理程序,就像DOM处理程序可以做到!
Using Rikudo Sennin's answer, you can pass parameters to your event handler by putting them inside the event itself, just like the DOM handlers do!
function fireEvent(name, target, param1, param2) {
//Ready: create a generic event
var evt = document.createEvent("Events")
//Aim: initialize it to be the event we want
evt.initEvent(name, true, true); //true for can bubble, true for cancelable
evt.param1 = param1;
evt.param2 = param2;
//FIRE!
target.dispatchEvent(evt);
}
function foobar(ev) {
alert("foobar" + ' ' + ev.param1 + ' ' + event.param2);
}
function testEvents(param1) {
window.addEventListener("foobar", foobar, false); //false to get it in bubble not capture.
fireEvent("foobar", document, 'test', param1);
}
这篇关于触发和捕获自定义事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文