js自定义事件

Posted 等风来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js自定义事件相关的知识,希望对你有一定的参考价值。

CustomEvent

event = new CustomEvent(typeArg, {
    detail: ‘‘           //数据
    bubbles: true,       //是否支持冒泡
    cancelable: true     //是否支持取消事件
});

1. 用法

//定义事件
var event = new CustomEvent(‘student‘,{
    detail: {
        hasSchool: ture
    }
})

//监听事件
domElement.addEvent(‘student‘, function(e){
    console.log(e.detail);
})

//触发事件,同一个监听的dom元素,dispatch一个event对象
domElement.dispatchEvent(event);

或者直接在window对象上触发

// 随后在对应的元素上触发该事件
if(window.dispatchEvent) {  
    window.dispatchEvent(myEvent);
} else {
    //兼容IE
    window.fireEvent(myEvent);
}

2. 兼容性

IE不支持CustomEvent,所幸IE已经快灭绝了

可以使用IE自身的document.createEvent来模拟一个CustomEvent,可达到一样的效果。

(function(){
    try{
        // a : While a window.CustomEvent object exists, it cannot be called as a constructor.
        // b : There is no window.CustomEvent object
        new window.CustomEvent(‘T‘);
    }catch(e){
        var CustomEvent = function(event, params){
            params = params || { bubbles: false, cancelable: false, detail: undefined };

            var evt = document.createEvent(‘CustomEvent‘);

            evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);

            return evt;
        };

        CustomEvent.prototype = window.Event.prototype;

        window.CustomEvent = CustomEvent;
    }
})();

 

以上是关于js自定义事件的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

如何让自定义视图观察包含片段的生命周期事件而不是活动?

VS Code中自定义Emmet代码片段

Three.js 中的自定义纹理着色器

VSCode自定义代码片段——CSS选择器