2

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

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

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

4

1 回答 1

4

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

PS 请注意,在某些浏览器中 args 是不够的,所有这些都是必需的,否则会引发异常。我不确定您要支持哪些浏览器。对于所有参数,请参阅:https ://developer.mozilla.org/en/docs/DOM/event.initMouseEvent

于 2013-02-10T23:30:42.900 回答