Sar*_*air 7 javascript jquery events cross-browser jquery-events
我需要创建一个自定义事件,它将一些数据传递给事件监听器.我已经创建了一个如下所示
自定义事件
var event = new CustomEvent('store', { 'detail': obj });
document.getElementById("Widget").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
倾听者
document.getElementById("Widget").addEventListener('store', function (e) {
console.log(e.detail);
document.getElementById("result").innerHTML = e.detail.name+"<br>"+e.detail.address;
}, false);
Run Code Online (Sandbox Code Playgroud)
它在Chrome和Firefox等浏览器中运行良好,但在IE11中无效.我收到错误 - trigger()在IE中.
var event = new CustomEvent('store', { 'detail': obj });
document.getElementById("Widget").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
如何使这种跨浏览器兼容?我不想使用jQuery,Listener因为它trigger()可能不在具有jQuery的页面中
提前致谢.
San*_*oop 10
IE11不支持CoustomEvent构造函数.你可以使用以下pollyfill
(function () {
if ( typeof window.CustomEvent === "function" ) return false;
function CustomEvent ( 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;
})();
Run Code Online (Sandbox Code Playgroud)
从MDN复制
查看“我可以使用”页面及其有关自定义事件的说明。
http://caniuse.com/#feat=customevent
具体来说,请阅读以下引用:
虽然 window.CustomEvent 对象存在,但不能将其作为构造函数调用。您必须使用 e = document.createEvent('CustomEvent'),然后使用 e.initCustomEvent(...),而不是 new CustomEvent(...)
| 归档时间: |
|
| 查看次数: |
7549 次 |
| 最近记录: |