Browse Source

Fix transitionEnd on multiple browsers

pull/747/head
Johann-S 10 years ago
parent
commit
b98038e492
  1. 18
      js/common.js
  2. 4
      js/popovers.js
  3. 12
      js/push.js

18
js/common.js

@ -27,4 +27,22 @@
transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform'
}; };
})(); })();
window.RATCHET.getTransitionEnd = (function () {
var el = document.createElement('ratchet');
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
};
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return transEndEventNames[name];
}
}
return transEndEventNames.transition;
})();
}()); }());

4
js/popovers.js

@ -26,7 +26,7 @@
var onPopoverHidden = function () { var onPopoverHidden = function () {
popover.style.display = 'none'; popover.style.display = 'none';
popover.removeEventListener('webkitTransitionEnd', onPopoverHidden); popover.removeEventListener(window.RATCHET.getTransitionEnd, onPopoverHidden);
}; };
var backdrop = (function () { var backdrop = (function () {
@ -35,7 +35,7 @@
element.classList.add('backdrop'); element.classList.add('backdrop');
element.addEventListener('touchend', function () { element.addEventListener('touchend', function () {
popover.addEventListener('webkitTransitionEnd', onPopoverHidden); popover.addEventListener(window.RATCHET.getTransitionEnd, onPopoverHidden);
popover.classList.remove('visible'); popover.classList.remove('visible');
popover.parentNode.removeChild(backdrop); popover.parentNode.removeChild(backdrop);
}); });

12
js/push.js

@ -366,12 +366,12 @@
container.offsetWidth; // force reflow container.offsetWidth; // force reflow
container.classList.remove('in'); container.classList.remove('in');
var fadeContainerEnd = function () { var fadeContainerEnd = function () {
container.removeEventListener('webkitTransitionEnd', fadeContainerEnd); container.removeEventListener(window.RATCHET.getTransitionEnd, fadeContainerEnd);
swap.classList.add('in'); swap.classList.add('in');
swap.addEventListener('webkitTransitionEnd', fadeSwapEnd); swap.addEventListener(window.RATCHET.getTransitionEnd, fadeSwapEnd);
}; };
var fadeSwapEnd = function () { var fadeSwapEnd = function () {
swap.removeEventListener('webkitTransitionEnd', fadeSwapEnd); swap.removeEventListener(window.RATCHET.getTransitionEnd, fadeSwapEnd);
container.parentNode.removeChild(container); container.parentNode.removeChild(container);
swap.classList.remove('fade'); swap.classList.remove('fade');
swap.classList.remove('in'); swap.classList.remove('in');
@ -379,13 +379,13 @@
complete(); complete();
} }
}; };
container.addEventListener('webkitTransitionEnd', fadeContainerEnd); container.addEventListener(window.RATCHET.getTransitionEnd, fadeContainerEnd);
} }
if (/slide/.test(transition)) { if (/slide/.test(transition)) {
var slideEnd = function () { var slideEnd = function () {
swap.removeEventListener('webkitTransitionEnd', slideEnd); swap.removeEventListener(window.RATCHET.getTransitionEnd, slideEnd);
swap.classList.remove('sliding', 'sliding-in'); swap.classList.remove('sliding', 'sliding-in');
swap.classList.remove(swapDirection); swap.classList.remove(swapDirection);
container.parentNode.removeChild(container); container.parentNode.removeChild(container);
@ -399,7 +399,7 @@
containerDirection = enter ? 'left' : 'right'; containerDirection = enter ? 'left' : 'right';
container.classList.add(containerDirection); container.classList.add(containerDirection);
swap.classList.remove(swapDirection); swap.classList.remove(swapDirection);
swap.addEventListener('webkitTransitionEnd', slideEnd); swap.addEventListener(window.RATCHET.getTransitionEnd, slideEnd);
} }
}; };

Loading…
Cancel
Save