2019-03-03 01:37:45 -05:00
|
|
|
var forEachEls = require("../foreach-els");
|
2014-05-04 08:44:33 +02:00
|
|
|
|
2014-05-22 06:20:02 +02:00
|
|
|
module.exports = function(els, events, opts) {
|
2019-03-03 01:37:45 -05:00
|
|
|
events = typeof events === "string" ? events.split(" ") : events;
|
2014-05-04 08:44:33 +02:00
|
|
|
|
|
|
|
|
events.forEach(function(e) {
|
2019-03-03 01:37:45 -05:00
|
|
|
var event;
|
|
|
|
|
event = document.createEvent("HTMLEvents");
|
|
|
|
|
event.initEvent(e, true, true);
|
|
|
|
|
event.eventName = e;
|
2014-05-22 06:20:02 +02:00
|
|
|
if (opts) {
|
|
|
|
|
Object.keys(opts).forEach(function(key) {
|
2019-03-03 01:37:45 -05:00
|
|
|
event[key] = opts[key];
|
|
|
|
|
});
|
2014-05-22 06:20:02 +02:00
|
|
|
}
|
2014-05-04 08:44:33 +02:00
|
|
|
|
2014-05-04 09:13:42 +02:00
|
|
|
forEachEls(els, function(el) {
|
2019-03-03 01:37:45 -05:00
|
|
|
var domFix = false;
|
2016-01-04 22:16:45 +11:00
|
|
|
if (!el.parentNode && el !== document && el !== window) {
|
2018-02-02 09:52:44 -05:00
|
|
|
// THANK YOU IE (9/10/11)
|
|
|
|
|
// dispatchEvent doesn't work if the element is not in the DOM
|
2019-03-03 01:37:45 -05:00
|
|
|
domFix = true;
|
|
|
|
|
document.body.appendChild(el);
|
2014-05-05 08:24:46 +02:00
|
|
|
}
|
2019-03-03 01:37:45 -05:00
|
|
|
el.dispatchEvent(event);
|
2014-05-05 08:24:46 +02:00
|
|
|
if (domFix) {
|
2019-03-03 01:37:45 -05:00
|
|
|
el.parentNode.removeChild(el);
|
2014-05-05 08:24:46 +02:00
|
|
|
}
|
2019-03-03 01:37:45 -05:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|