From 51234729636b90246aa3141f2b02263ddc244658 Mon Sep 17 00:00:00 2001 From: Ferdinand Full Date: Fri, 30 Oct 2015 12:54:56 +0100 Subject: [PATCH] Remove animation start listener from the resize triggers at the removeResizeListener function (Edge issue) --- detect-element-resize.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/detect-element-resize.js b/detect-element-resize.js index cbb3c02..a1f29d2 100644 --- a/detect-element-resize.js +++ b/detect-element-resize.js @@ -35,7 +35,7 @@ expandChild.style.height = expand.offsetHeight + 1 + 'px'; expand.scrollLeft = expand.scrollWidth; expand.scrollTop = expand.scrollHeight; - }; + } function checkTriggers(element){ return element.offsetWidth != element.__resizeLast__.width || @@ -124,11 +124,17 @@ resetTriggers(element); element.addEventListener('scroll', scrollListener, true); - /* Listen for a css animation to detect element display/re-attach */ - animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function(e) { - if(e.animationName == animationName) - resetTriggers(element); - }); + + if (animationstartevent) { + /* Listen for a css animation to detect element display/re-attach */ + var animationStartListener = function(e) { + if(e.animationName == animationName) { + resetTriggers(element); + } + }; + element.__resizeTriggers__.animationStartListener = animationStartListener; + element.__resizeTriggers__.addEventListener(animationstartevent, animationStartListener); + } } element.__resizeListeners__.push(fn); } @@ -140,8 +146,9 @@ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1); if (!element.__resizeListeners__.length) { element.removeEventListener('scroll', scrollListener); + element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.animationStartListener); element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__); } } } -})(); \ No newline at end of file +})();