场景:开发widget组件动态加载js脚本文件,并且触发相关方法等。
这里借助自定义事件CustomEvent,EventTarget 来实现
1.CustomEvent
1.1 CustomEvent 语法
event = new CustomEvent(typeArg, customEventInit);
1.2 CustomEvent 参数
1.typeArg
一个表示 event 名字的字符串
2.customEventInit
可选一个字典类型参数,有如下字段
"detail": 可选的默认值是 null 的任意类型数据,是一个与 event 相关的值
"bubbles": 一个布尔值,表示该事件能否冒泡。注意:测试chrome默认为不冒泡。
"cancelable": 一个布尔值,表示该事件是否可以取消。
2.EventTarget
`EventTarget` 是一个 DOM 接口,由可以接收事件、并且可以创建侦听器的对象实现。
Element
,document
和 window
是最常见的 event targets ,但是其他对象也可以作为 event targets,比如 XMLHttpRequest
,AudioNode
,AudioContext
等等。
3 应用
//obj:EventTarget
// 监听事件
obj.addEventListener("client:register", function(e) { foo(e.detail.plugin) });
// 注册事件
var event = new CustomEvent("client:register", {
detail: {
plugin: 'xxx'
}
});
// 触发事件
obj.dispatchEvent(event);
网友评论