CustomEvent - 表示由应用程序为任何目的初始化的事件
CustomEvent
接口表示由应用程序为任何目的初始化的事件。
注意: 此特性在 Web Worker 中可用。
构造函数
CustomEvent()
创建一个 CustomEvent
.
属性
CustomEvent.detail
只读
初始化事件时传递的任何数据。
该接口从其父类 Event
继承了属性
方法
CustomEvent.initCustomEvent()
初始化一个 CustomEvent
对象。如果事件已经被调度,则该方法不执行任何操作。
该接口从其父类 Event
继承了方法。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM CustomEvent 的定义 |
现行的标准 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 6 | 9 | 11 | 5.1 |
在 workers 中可用 | 支持 | 支持 | 48 | 支持 | 支持 | 支持 |
CustomEvent() 构造函数 |
15 | 支持 | 11 | 不支持 | 11.6 | 不支持1 |
detail |
11 | 未知 | 11 | 不支持 | 11.6 | 不支持1 |
initCustomEvent |
支持 592 |
支持 | 6 | 9 | 11 | 5.1 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
在 workers 中可用 | 支持 | 支持 | 支持 | 48 | 未知 | 支持 | 支持 |
CustomEvent() 构造函数 |
支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 不支持1 |
detail |
支持 | 支持 | 未知 | 14 | 未知 | 支持 | 不支持1 |
initCustomEvent |
支持 592 |
支持 592 |
支持 | 6 | 未知 | 支持 | 支持 |
1. 在 Nightly build 中可用 (535.2)
2. canBubble
,cancelable
和 detail
是可选的参数,默认值分别为 false
, false
和 null
。
从特权代码到非特权代码的触发
当从特权代码(即扩展)触发 CustomEvent 到非特权代码(即网页)时,应该考虑安全问题。 Firefox 和其他 Gecko 应用程序限制在一个上下文中创建的对象直接用于另一个上下文,这将自动防止安全漏洞,但这些限制也可能会阻止您的代码按预期运行。
在创建 CustomEvent 对象时,必须从同一窗口创建对象。 CustomEvent 的 detail
属性将受到相同的限制。在内容中可以无限制地读取字符串和数组值,但自定义对象则不行。使用自定义对象时,您需要使用 Components.utils.cloneInto() 定义可从内容脚本中读取的对象的属性。
// doc 是对内容 document 对象的引用
function dispatchCustomEvent(doc) {
var eventDetail = Components.utils.cloneInto({foo: 'bar'}, doc.defaultView);
var myEvent = doc.defaultView.CustomEvent("mytype", eventDetail);
doc.dispatchEvent(myEvent);
}
但需要记住的是,公开函数将允许内容脚本使用 chrome 权限运行它,这可能会产生一个安全漏洞。