将自定义数据传递给模拟的JavaScript事件

问题描述:

我希望能够将自定义数据传递给模拟的JavaScript事件,以便我可以在事件侦听器回调中唯一标识此模拟事件。例如,如果我称之为:将自定义数据传递给模拟的JavaScript事件

var event = document.createEvent("MouseEvents"); 
var args = ['mousemove', true, true, window, 1, 0, 0]; 
event.initMouseEvent.apply(event, args); 
target.dispatchEvent(event); 

我将如何能够将数据传递到这个事件,然后从事件侦听器回调找回?

+0

如果要发送自定义数据,请使用CustomEvent,如下所示:http://davidwalsh.name/customevent – 2013-02-10 23:30:40

只需将数据添加到您的event对象应该是足够了:

target.addEventListener("mousemove", function(e) { 
    console.log(e.data); 
}, false); 

var event = document.createEvent("MouseEvents"); 
var args = ['mousemove', true, true, window, 1, 0, 0]; 
event.data = "foobar"; 
event.initMouseEvent.apply(event, args); 
target.dispatchEvent(event); 

附: 注意,在一些浏览器中,参数不够用,否则都需要引发异常。我不确定你想要支持哪些浏览器。有关所有参数,请参阅:https://developer.mozilla.org/en/docs/DOM/event.initMouseEvent

+0

我不确定支持鼠标中自定义数据的所有浏览器事件。 – 2013-02-10 23:32:20

+0

是啊,这是我正在寻找的,但我很好奇@mhaqs点。我无法使用自己的自定义事件 - 它需要成为“鼠标移动”事件。 – 2013-02-10 23:32:48

+0

我不确定IE是什么,因为我不是Windows用户,IE总是有不可预知的行为。然而,这不是支持鼠标事件中的自定义数据,它只是将动态属性添加到绝对受到广泛支持的JavaScript对象(并且事件对象不是例外)。 – ZER0 2013-02-10 23:36:34