From 8c0569200462eb14d003c7f031bc2924b629f6f4 Mon Sep 17 00:00:00 2001 From: Maxime Thirouin Date: Mon, 5 May 2014 08:24:46 +0200 Subject: [PATCH] Fix dispatchEvent for IE9/10/11 dispatchEvent doesn't work if element is not in the dom This is not the silverbullet since an element can have a parent that is not in the dom too, but to avoid dom update all the time, it should be enough for very particular use cases (eg in my case unit test). Maybe this should be moved into the test directly to be sure there is a parent, we will see that later. --- src/scripts/lib/events/trigger.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/scripts/lib/events/trigger.js b/src/scripts/lib/events/trigger.js index 1cf85fc..c3efdc0 100644 --- a/src/scripts/lib/events/trigger.js +++ b/src/scripts/lib/events/trigger.js @@ -10,7 +10,17 @@ module.exports = function(els, events) { event.eventName = e forEachEls(els, function(el) { + var domFix = false + if (!el.parentNode) { + // THANKS YOU IE (9/10//11 concerned) + // dispatchEvent doesn't work if element is not in the dom + domFix = true + document.body.appendChild(el) + } el.dispatchEvent(event) + if (domFix) { + el.parentNode.removeChild(el) + } }) }) }