From e8bcb089f298a7bda27fcf5469e1718a15c6ff86 Mon Sep 17 00:00:00 2001 From: EvoGroupTN Date: Tue, 3 Nov 2015 10:38:31 +0100 Subject: [PATCH 1/4] support devices : add touchstart touchend touchmove touchcancel events --- dragscroll.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dragscroll.js b/dragscroll.js index d99cc3f..1df48d8 100644 --- a/dragscroll.js +++ b/dragscroll.js @@ -21,6 +21,10 @@ var mousemove = 'mousemove'; var mouseup = 'mouseup'; var mousedown = 'mousedown'; + var touchstart = 'touchstart'; + var touchend = 'touchend'; + var touchmove = 'touchmove'; + var touchcancel = 'touchcancel'; var EventListener = 'EventListener'; var addEventListener = 'add'+EventListener; var removeEventListener = 'remove'+EventListener; @@ -30,8 +34,12 @@ for (i = 0; i < dragged.length;) { el = dragged[i++]; el[removeEventListener](mousedown, el.md, 0); + el[removeEventListener](touchstart, el.md, 0); _window[removeEventListener](mouseup, el.mu, 0); _window[removeEventListener](mousemove, el.mm, 0); + _window[removeEventListener](touchmove, el.mm, 0); + _window[removeEventListener](touchend, el.mm, 0); + _window[removeEventListener](touchcancel, el.mm, 0); } dragged = _document.getElementsByClassName('dragscroll'); @@ -48,10 +56,27 @@ e.stopPropagation(); }, 0 ); + el[addEventListener]( + touchstart, + el.tmd = function(e) { + pushed = 1; + lastClientX = e.touches[0].clientX; + lastClientY = e.touches[0].clientY; + + e.preventDefault(); + e.stopPropagation(); + }, 0 + ); _window[addEventListener]( mouseup, el.mu = function() {pushed = 0;}, 0 ); + _window[addEventListener]( + touchend, el.tmu = function() {pushed = 0;}, 0 + ); + _window[addEventListener]( + touchcancel, el.tmc = function() {pushed = 0;}, 0 + ); _window[addEventListener]( mousemove, @@ -65,6 +90,18 @@ } }, 0 ); + _window[addEventListener]( + touchmove, + el.tmm = function(e, scroller) { + scroller = el.scroller||el; + if (pushed) { + scroller.scrollLeft -= + (- lastClientX + (lastClientX=e.touches[0].clientX)); + scroller.scrollTop -= + (- lastClientY + (lastClientY=e.touches[0].clientY)); + } + }, 0 + ); })(dragged[i++]); } } From 9e542b193491f27227107311c4c9ec7c5a53a3e1 Mon Sep 17 00:00:00 2001 From: EvoGroupTN Date: Fri, 6 Nov 2015 10:57:48 +0100 Subject: [PATCH 2/4] drag all pages together --- dragscroll.js | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/dragscroll.js b/dragscroll.js index 1df48d8..e2b69b8 100644 --- a/dragscroll.js +++ b/dragscroll.js @@ -1,9 +1,9 @@ /** * @fileoverview dragscroll - scroll area by dragging * @version 0.0.5 - * + * * @license MIT, see http://github.com/asvd/intence - * @copyright 2015 asvd + * @copyright 2015 asvd */ @@ -67,7 +67,7 @@ e.stopPropagation(); }, 0 ); - + _window[addEventListener]( mouseup, el.mu = function() {pushed = 0;}, 0 ); @@ -77,16 +77,18 @@ _window[addEventListener]( touchcancel, el.tmc = function() {pushed = 0;}, 0 ); - + _window[addEventListener]( mousemove, el.mm = function(e, scroller) { - scroller = el.scroller||el; if (pushed) { - scroller.scrollLeft -= - (- lastClientX + (lastClientX=e.clientX)); - scroller.scrollTop -= - (- lastClientY + (lastClientY=e.clientY)); + var top = (- lastClientY + (lastClientY=e.clientY)); + var left = (- lastClientX + (lastClientX=e.clientX)); + for(var i = 0; i < dragged.length; i++) { + scroller = dragged[i].scroller||dragged[i]; + scroller.scrollLeft -= left; + scroller.scrollTop -= top; + } } }, 0 ); @@ -95,10 +97,13 @@ el.tmm = function(e, scroller) { scroller = el.scroller||el; if (pushed) { - scroller.scrollLeft -= - (- lastClientX + (lastClientX=e.touches[0].clientX)); - scroller.scrollTop -= - (- lastClientY + (lastClientY=e.touches[0].clientY)); + var top = (- lastClientY + (lastClientY=e.clientY)); + var left = (- lastClientX + (lastClientX=e.clientX)); + for(var i = 0; i < dragged.length; i++) { + scroller = dragged[i].scroller||dragged[i]; + scroller.scrollLeft -= left; + scroller.scrollTop -= top; + } } }, 0 ); @@ -106,7 +111,7 @@ } } - + if (_document.readyState == 'complete') { reset(); } else { From 29b0130ecdb8ace43645e2018ebc7a01677862d9 Mon Sep 17 00:00:00 2001 From: EvoGroupTN Date: Fri, 6 Nov 2015 18:05:22 +0100 Subject: [PATCH 3/4] drag all pages together --- dragscroll.js | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/dragscroll.js b/dragscroll.js index e2b69b8..104859e 100644 --- a/dragscroll.js +++ b/dragscroll.js @@ -30,16 +30,30 @@ var removeEventListener = 'remove'+EventListener; var dragged = []; + + var off = function(i, el) { + for (i = 0; i < dragged.length;) { + el = dragged[i++]; + el[removeEventListener](mousedown, el.md, 0); + el[removeEventListener](touchstart, el.tmd, 0); + _window[removeEventListener](mouseup, el.mu, 0); + _window[removeEventListener](mousemove, el.mm, 0); + _window[removeEventListener](touchmove, el.tmm, 0); + _window[removeEventListener](touchend, el.tmu, 0); + _window[removeEventListener](touchcancel, el.tmc, 0); + } + } + var reset = function(i, el) { for (i = 0; i < dragged.length;) { el = dragged[i++]; el[removeEventListener](mousedown, el.md, 0); - el[removeEventListener](touchstart, el.md, 0); + el[removeEventListener](touchstart, el.tmd, 0); _window[removeEventListener](mouseup, el.mu, 0); _window[removeEventListener](mousemove, el.mm, 0); - _window[removeEventListener](touchmove, el.mm, 0); - _window[removeEventListener](touchend, el.mm, 0); - _window[removeEventListener](touchcancel, el.mm, 0); + _window[removeEventListener](touchmove, el.tmm, 0); + _window[removeEventListener](touchend, el.tmu, 0); + _window[removeEventListener](touchcancel, el.tmc, 0); } dragged = _document.getElementsByClassName('dragscroll'); @@ -84,6 +98,7 @@ if (pushed) { var top = (- lastClientY + (lastClientY=e.clientY)); var left = (- lastClientX + (lastClientX=e.clientX)); + for(var i = 0; i < dragged.length; i++) { scroller = dragged[i].scroller||dragged[i]; scroller.scrollLeft -= left; @@ -95,10 +110,10 @@ _window[addEventListener]( touchmove, el.tmm = function(e, scroller) { - scroller = el.scroller||el; - if (pushed) { - var top = (- lastClientY + (lastClientY=e.clientY)); - var left = (- lastClientX + (lastClientX=e.clientX)); + if (pushed) { + var top = (- lastClientY + (lastClientY=e.touches[0].clientY)); + var left = (- lastClientX + (lastClientX=e.touches[0].clientX)); + for(var i = 0; i < dragged.length; i++) { scroller = dragged[i].scroller||dragged[i]; scroller.scrollLeft -= left; @@ -119,5 +134,6 @@ } exports.reset = reset; + exports.off = off; })); From 791e757c6517d7dc4d1d98ef8ec431175765fdab Mon Sep 17 00:00:00 2001 From: EvoGroupTN Date: Thu, 3 Dec 2015 11:22:21 +0100 Subject: [PATCH 4/4] revert --- dragscroll.js | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/dragscroll.js b/dragscroll.js index 104859e..4a5fbb3 100644 --- a/dragscroll.js +++ b/dragscroll.js @@ -77,8 +77,6 @@ lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; - e.preventDefault(); - e.stopPropagation(); }, 0 ); @@ -95,30 +93,25 @@ _window[addEventListener]( mousemove, el.mm = function(e, scroller) { + scroller = el.scroller||el; if (pushed) { - var top = (- lastClientY + (lastClientY=e.clientY)); - var left = (- lastClientX + (lastClientX=e.clientX)); - - for(var i = 0; i < dragged.length; i++) { - scroller = dragged[i].scroller||dragged[i]; - scroller.scrollLeft -= left; - scroller.scrollTop -= top; - } + scroller.scrollLeft -= + (- lastClientX + (lastClientX=e.clientX)); + scroller.scrollTop -= + (- lastClientY + (lastClientY=e.clientY)); } }, 0 ); + _window[addEventListener]( touchmove, el.tmm = function(e, scroller) { - if (pushed) { - var top = (- lastClientY + (lastClientY=e.touches[0].clientY)); - var left = (- lastClientX + (lastClientX=e.touches[0].clientX)); - - for(var i = 0; i < dragged.length; i++) { - scroller = dragged[i].scroller||dragged[i]; - scroller.scrollLeft -= left; - scroller.scrollTop -= top; - } + scroller = el.scroller||el; + if (pushed) { + scroller.scrollLeft -= + (- lastClientX + (lastClientX=e.touches[0].clientX)); + scroller.scrollTop -= + (- lastClientY + (lastClientY=e.touches[0].clientY)); } }, 0 );