使用自定义附加数据创建JavaScript事件

时间:2012-01-30 22:04:19

标签: javascript javascript-events event-handling

是否有JavaScript方法将自定义数据传递给手动创建的JavaScript事件?

好的,我们说我有这个代码来创建和触发JavaScript事件:

var evObj = document.createEvent('HTMLEvents');
evObj.initEvent('submit', bubbling, cancelable);
anElement.dispatchEvent(evObj);

这很好用,可以使用以下代码处理:

document.addEventListener('submit', mySubmitEventHandler, true);

但是,我需要一种方法将其他数据传递给事件,以便mySubmitEventHandler知道事件是由用户触发还是由JavaScript事件创建,如上所示。布尔值就足够了。

那么,我怎样才能添加类似" myEvent = true"到新创建的evObj

请不要jQuery的答案,我需要用纯JavaScript做这个。

2 个答案:

答案 0 :(得分:20)

将参数附加到evObj

evObj.flag = 'Hi!';
anElement.dispatchEvent(evObj);

此代码演示dispatchEvent传递的事件对象等于事件侦听器中的事件对象( Live demo ):

var evObj = document.createEvent('HTMLEvents');
document.body.addEventListener('test', function(e){ alert(e === evObj); },true);
evObj.initEvent('test', true, true);
document.body.dispatchEvent(evObj); // Shows alert, "true"

答案 1 :(得分:5)

你的evObj它是一个普通的对象你可以添加任何数据作为对象的属性,如evObj.myData =“blablabla”;然后读取监听器中的数据

希望这有帮助