是否有一种 JavaScript 方法可以将自定义数据传递给手动创建的 JavaScript 事件?
好吧,假设我有这段代码来创建和触发一个 JavaScript 事件:
var evObj = document.createEvent('HTMLEvents');
evObj.initEvent('submit', bubbling, cancelable);
anElement.dispatchEvent(evObj);
这工作正常,可以使用以下代码处理:
document.addEventListener('submit', mySubmitEventHandler, true);
但是,我需要一种方法将附加数据传递给事件,以便 mySubmitEventHandler
知道事件是由用户触发的还是由 JavaScript 事件创建触发的,如上所示。一个 bool 值就足够了。
那么,如何向新创建的 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"
关于使用自定义附加数据创建 JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071485/