diff options
author | Johann-S <johann.servoire@gmail.com> | 2018-10-16 12:10:29 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2018-10-20 15:32:09 +0300 |
commit | b1dc6b324c33bc6a4b0cb2dc06939136e32d0e0c (patch) | |
tree | 4d6bf5747a6b072aef3f14e0d1bab796b7b11a5d /js | |
parent | 8883ccb205abfe975b4cacca8fbc22cf67092eb0 (diff) |
avoid drag img
Diffstat (limited to 'js')
-rw-r--r-- | js/src/carousel.js | 3 | ||||
-rw-r--r-- | js/tests/unit/carousel.js | 20 |
2 files changed, 14 insertions, 9 deletions
diff --git a/js/src/carousel.js b/js/src/carousel.js index 3507a81594..989390aa0a 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -64,6 +64,7 @@ const Event = { POINTERUP : `pointerup${EVENT_KEY}`, POINTERLEAVE : `pointerleave${EVENT_KEY}`, POINTERCANCEL : `pointercancel${EVENT_KEY}`, + DRAG_START : `dragstart${EVENT_KEY}`, LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`, CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` } @@ -84,6 +85,7 @@ const Selector = { ACTIVE : '.active', ACTIVE_ITEM : '.active.carousel-item', ITEM : '.carousel-item', + ITEM_IMG : '.carousel-item img', NEXT_PREV : '.carousel-item-next, .carousel-item-prev', INDICATORS : '.carousel-indicators', DATA_SLIDE : '[data-slide], [data-slide-to]', @@ -323,6 +325,7 @@ class Carousel { } } + $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault()) if (this._pointerEvent) { $(this._element).on(Event.POINTERDOWN, (event) => start(event)) $(this._element).on(Event.POINTERUP, (event) => end(event)) diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js index bafd45fe78..d7d9ad2508 100644 --- a/js/tests/unit/carousel.js +++ b/js/tests/unit/carousel.js @@ -4,17 +4,15 @@ $(function () { window.Carousel = typeof bootstrap !== 'undefined' ? bootstrap.Carousel : Carousel var originWinPointerEvent = window.PointerEvent - var originMsPointerEvent = window.MSPointerEvent + window.MSPointerEvent = null var supportPointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent) function clearPointerEvents() { window.PointerEvent = null - window.MSPointerEvent = null } function restorePointerEvents() { window.PointerEvent = originWinPointerEvent - window.MSPointerEvent = originMsPointerEvent } var stylesCarousel = [ @@ -1032,11 +1030,11 @@ $(function () { return } + document.documentElement.ontouchstart = $.noop Simulator.setType('pointer') assert.expect(3) var $styles = $(stylesCarousel).appendTo('head') var done = assert.async() - document.documentElement.ontouchstart = $.noop var carouselHTML = '<div class="carousel" data-interval="false">' + @@ -1050,8 +1048,7 @@ $(function () { ' </div>' + '</div>' - var $carousel = $(carouselHTML) - $carousel.appendTo('#qunit-fixture') + var $carousel = $(carouselHTML).appendTo('#qunit-fixture') var $item = $('#item') $carousel.bootstrapCarousel() var carousel = $carousel.data('bs.carousel') @@ -1061,8 +1058,8 @@ $(function () { assert.ok(true, 'slid event fired') assert.ok($item.hasClass('active')) assert.ok(spy.called) - delete document.documentElement.ontouchstart $styles.remove() + delete document.documentElement.ontouchstart done() }) @@ -1075,6 +1072,7 @@ $(function () { QUnit.test('should allow swiperight and call prev with touch events', function (assert) { Simulator.setType('touch') clearPointerEvents() + assert.expect(3) var done = assert.async() document.documentElement.ontouchstart = $.noop @@ -1119,12 +1117,12 @@ $(function () { return } + document.documentElement.ontouchstart = $.noop assert.expect(3) Simulator.setType('pointer') var $styles = $(stylesCarousel).appendTo('head') var done = assert.async() - document.documentElement.ontouchstart = $.noop var carouselHTML = '<div class="carousel" data-interval="false">' + @@ -1150,6 +1148,7 @@ $(function () { assert.ok(!$item.hasClass('active')) assert.ok(spy.called) $styles.remove() + delete document.documentElement.ontouchstart done() }) @@ -1164,9 +1163,9 @@ $(function () { assert.expect(3) clearPointerEvents() Simulator.setType('touch') + document.documentElement.ontouchstart = $.noop var done = assert.async() - document.documentElement.ontouchstart = $.noop var carouselHTML = '<div class="carousel" data-interval="false">' + @@ -1192,6 +1191,7 @@ $(function () { assert.ok(!$item.hasClass('active')) assert.ok(spy.called) restorePointerEvents() + delete document.documentElement.ontouchstart done() }) @@ -1205,6 +1205,7 @@ $(function () { QUnit.test('should not allow pinch with touch events', function (assert) { assert.expect(0) clearPointerEvents() + Simulator.setType('touch') var done = assert.async() document.documentElement.ontouchstart = $.noop @@ -1221,6 +1222,7 @@ $(function () { touches: 2 }, function () { restorePointerEvents() + delete document.documentElement.ontouchstart done() }) }) |