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

好的,假设我得到了以下代码来创建和触发JavaScript事件:

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

可以正常工作,可以使用以下代码进行处理:
document.addEventListener('submit', mySubmitEventHandler, true);

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

因此,如何为新创建的evObj添加“myEvent = true”之类的内容?

而且,请不要使用jQuery答案,我需要使用纯JavaScript来做到这一点。

最佳答案

将参数附加到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"

07-26 08:34