From c37c1a67438b3c682bac3787069eb33fefa6f154 Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Tue, 16 Sep 2014 06:02:27 +0200 Subject: [PATCH] Only enable `pause: hover` for non-touch browsers Fixes #11967. --- js/carousel.js | 2 +- js/tests/unit/carousel.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/js/carousel.js b/js/carousel.js index 65cc7b9129..4c9a1165ce 100644 --- a/js/carousel.js +++ b/js/carousel.js @@ -23,7 +23,7 @@ this.$active = this.$items = null - this.options.pause == 'hover' && this.$element + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js index 3f9e61a349..64d2144628 100644 --- a/js/tests/unit/carousel.js +++ b/js/tests/unit/carousel.js @@ -398,4 +398,26 @@ $(function () { strictEqual($template.find('.item')[1], $template.find('.active')[0], 'second item active') }) + + test('should only add mouseenter and mouseleave listeners when not on mobile', function () { + var isMobile = 'ontouchstart' in document.documentElement + var templateHTML = '' + var $template = $(templateHTML).bootstrapCarousel() + + $.each(['mouseover', 'mouseout'], function (i, type) { + strictEqual(type in $._data($template[0], 'events'), !isMobile, 'does' + (isMobile ? ' not' : '') + ' listen for ' + type + ' events') + }) + }) })