受PhantomJS版本限制,如何用旧方法替代CustomEvent并保留detail对象?
旧版PhantomJS替代CustomEvent的兼容实现
完全可行。在CustomEvent API普及前,可通过document.createEvent()和initEvent()组合创建自定义事件,同时手动为事件对象添加detail属性来保留所需数据,效果和原代码一致。
替代代码示例
// 创建基础事件对象 var event = document.createEvent('Event'); // 初始化事件:指定事件名称、是否冒泡、是否可取消(与原CustomEvent默认行为匹配) event.initEvent('Interval', false, false); // 挂载detail属性,保留原数据结构 event.detail = { type: 'foo', IntervalId: 1234 }; // 触发事件 dispatchEvent(event);
说明
- 事件接收方依然可以通过
event.detail获取你设置的自定义数据,和使用CustomEvent的方式完全相同。 initEvent的后两个参数分别对应CustomEvent配置项里的bubbles和cancelable,原代码未显式设置,默认值为false,所以这里保持一致。如果需要事件冒泡或可取消,将对应参数改为true即可。
内容的提问来源于stack exchange,提问作者Derek
相关产品推荐
相关产品推荐

