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

时间:2013-02-10 23:01:55

标签: javascript javascript-events

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

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

我如何能够将数据传递给此事件,然后从事件侦听器回调中检索它?

1 个答案:

答案 0 :(得分:3)

只需将数据添加到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);

P.S。 请注意,在某些浏览器中args是不够的,所有这些都是必需的,否则会抛出异常。我不确定你想要支持哪些浏览器。有关所有参数,请参阅:https://developer.mozilla.org/en/docs/DOM/event.initMouseEvent