触发和捕获自定义事件 [英] Firing and capturing custom events

查看:55
本文介绍了触发和捕获自定义事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

想象一下这个场景(它实际上只是一个场景):

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆