Firing and capturing custom events

前端 未结 4 582
青春惊慌失措
青春惊慌失措 2020-12-29 10:15

Imagine this scenario (it\'s really just a scenario):

  • I have a global counter that gets incremented on every mouse click.
  • when I reach 50 clicks, I
4条回答
  •  再見小時候
    2020-12-29 10:33

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

提交回复
热议问题