Javascript CustomEvent详细信息未通过

Joe*_*oel 9 javascript jquery javascript-events

我正在尝试创建自定义javascript事件.该事件正常工作并触发,但我传递的'detail'对象不可用.

这是我用来创建和发送事件的代码;

var double_tap = new CustomEvent("doubleTap", {
    detail: {
        hello: 'world'  
    },
    bubbles: true,
    cancelable: true
});

this.dispatchEvent(double_tap);
Run Code Online (Sandbox Code Playgroud)

然后我使用jquery向主体添加一个事件监听器;

$('body').on('doubleTap', function( e ) { 
    console.log(e);
});
Run Code Online (Sandbox Code Playgroud)

它确实触发,并且控制台日志发生,但不幸的是,日志只输出事件详细信息,包括气泡和可取消属性,但从不输出'detail'对象,因此无法访问信息.

这是一个jsbin例子,我在body的click事件上创建事件,这样你就可以看到控制台; http://jsbin.com/looseroots/6

我想能够在事件被触发时从'detail'对象获取数据.我究竟做错了什么?我在Chrome中测试了这个,在iOS上测试了Safari

eze*_*ima 11

obj.addEventListener("eventName", function(e) {
console.log(e.your_property)
})

var event = new CustomEvent("eventName");
event.your_property = { key: "value" };

obj.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

您可以在调度发送时在CustomEvent中创建属性.

  • 伟大的!这是工作。但我不知道为什么 event.detail 不起作用,即当我们详细传递对象时,在侦听器中找不到它。 (3认同)
  • 这是黄金!:-) (2认同)

los*_*rce 9

您需要访问originalEvent属性以获取详细信息

console.log(e.originalEvent.detail);
Run Code Online (Sandbox Code Playgroud)