Files
pjax/lib/events/trigger.js

32 lines
844 B
JavaScript
Raw Normal View History

2019-03-03 01:37:45 -05:00
var forEachEls = require("../foreach-els");
2014-05-04 08:44:33 +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;
if (opts) {
Object.keys(opts).forEach(function(key) {
2019-03-03 01:37:45 -05:00
event[key] = opts[key];
});
}
2014-05-04 08:44:33 +02:00
forEachEls(els, function(el) {
2019-03-03 01:37:45 -05:00
var domFix = false;
if (!el.parentNode && el !== document && el !== window) {
// 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);
}
2019-03-03 01:37:45 -05:00
el.dispatchEvent(event);
if (domFix) {
2019-03-03 01:37:45 -05:00
el.parentNode.removeChild(el);
}
2019-03-03 01:37:45 -05:00
});
});
};