* Lots of code cleanup * Cleanup parse-options tests - Rename objects for clarity and inline unneeded objects - Remove unneeded tests - Use Object.keys().length instead of a custom function - Use typeof === "object" instead of a custom function that checks the prototype tree as well, since we don't expect anything but an object literal. * Remove old switchFallback code * Remove polyfill for Function.prototype.bind * Inline small functions * Add more documentation and tests for options.currentUrlFullReload Closes #17 * Update package.json
32 lines
830 B
JavaScript
32 lines
830 B
JavaScript
var forEachEls = require("../foreach-els")
|
|
|
|
module.exports = function(els, events, opts) {
|
|
events = (typeof events === "string" ? events.split(" ") : events)
|
|
|
|
events.forEach(function(e) {
|
|
var event
|
|
event = document.createEvent("HTMLEvents")
|
|
event.initEvent(e, true, true)
|
|
event.eventName = e
|
|
if (opts) {
|
|
Object.keys(opts).forEach(function(key) {
|
|
event[key] = opts[key]
|
|
})
|
|
}
|
|
|
|
forEachEls(els, function(el) {
|
|
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
|
|
domFix = true
|
|
document.body.appendChild(el)
|
|
}
|
|
el.dispatchEvent(event)
|
|
if (domFix) {
|
|
el.parentNode.removeChild(el)
|
|
}
|
|
})
|
|
})
|
|
}
|