Skip to content

Commit

Permalink
perf(touch): optimize scroll experience
Browse files Browse the repository at this point in the history
  • Loading branch information
wangyi7099 committed May 9, 2018
1 parent cee0223 commit 53148ed
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 27 deletions.
12 changes: 6 additions & 6 deletions dist/vuescroll.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -2268,26 +2268,30 @@ function render(content, global, suffix, value) {

function listenContainer(container, scroller, eventCallback, zooming, preventDefault) {
var destroy = null;
// for touch
function touchstart(e) {
// Don't react if initial down happens on a form element
if (e.touches[0] && e.touches[0].target && e.touches[0].target.tagName.match(/input|textarea|select/i)) {
return;
}
eventCallback("mousedown");
scroller.doTouchStart(e.touches, e.timeStamp);

if (preventDefault) {
e.preventDefault();
}
// here , we want to manully prevent default, so we
// set passive to false
// see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
document.addEventListener("touchmove", touchmove, { passive: false });
}
function touchmove(e) {
eventCallback("mousemove");
scroller.doTouchMove(e.touches, e.timeStamp, e.scale);
e.preventDefault();
}
function touchend(e) {
eventCallback("mouseup");
scroller.doTouchEnd(e.timeStamp);
document.removeEventListener("touchmove", touchmove);
}
function touchcancel(e) {
scroller.doTouchEnd(e.timeStamp);
Expand Down Expand Up @@ -2338,17 +2342,13 @@ function listenContainer(container, scroller, eventCallback, zooming, preventDef

container.addEventListener("touchstart", touchstart, false);

document.addEventListener("touchmove", touchmove, false);

document.addEventListener("touchend", touchend, false);

document.addEventListener("touchcancel", touchcancel, false);

destroy = function destroy() {
container.removeEventListener("touchstart", touchstart, false);

document.removeEventListener("touchmove", touchmove, false);

document.removeEventListener("touchend", touchend, false);

document.removeEventListener("touchcancel", touchcancel, false);
Expand Down
2 changes: 1 addition & 1 deletion dist/vuescroll.common.min.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions dist/vuescroll.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -2264,26 +2264,30 @@ function render(content, global, suffix, value) {

function listenContainer(container, scroller, eventCallback, zooming, preventDefault) {
var destroy = null;
// for touch
function touchstart(e) {
// Don't react if initial down happens on a form element
if (e.touches[0] && e.touches[0].target && e.touches[0].target.tagName.match(/input|textarea|select/i)) {
return;
}
eventCallback("mousedown");
scroller.doTouchStart(e.touches, e.timeStamp);

if (preventDefault) {
e.preventDefault();
}
// here , we want to manully prevent default, so we
// set passive to false
// see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
document.addEventListener("touchmove", touchmove, { passive: false });
}
function touchmove(e) {
eventCallback("mousemove");
scroller.doTouchMove(e.touches, e.timeStamp, e.scale);
e.preventDefault();
}
function touchend(e) {
eventCallback("mouseup");
scroller.doTouchEnd(e.timeStamp);
document.removeEventListener("touchmove", touchmove);
}
function touchcancel(e) {
scroller.doTouchEnd(e.timeStamp);
Expand Down Expand Up @@ -2334,17 +2338,13 @@ function listenContainer(container, scroller, eventCallback, zooming, preventDef

container.addEventListener("touchstart", touchstart, false);

document.addEventListener("touchmove", touchmove, false);

document.addEventListener("touchend", touchend, false);

document.addEventListener("touchcancel", touchcancel, false);

destroy = function destroy() {
container.removeEventListener("touchstart", touchstart, false);

document.removeEventListener("touchmove", touchmove, false);

document.removeEventListener("touchend", touchend, false);

document.removeEventListener("touchcancel", touchcancel, false);
Expand Down
2 changes: 1 addition & 1 deletion dist/vuescroll.esm.min.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions dist/vuescroll.js
Original file line number Diff line number Diff line change
Expand Up @@ -2270,26 +2270,30 @@ function render(content, global, suffix, value) {

function listenContainer(container, scroller, eventCallback, zooming, preventDefault) {
var destroy = null;
// for touch
function touchstart(e) {
// Don't react if initial down happens on a form element
if (e.touches[0] && e.touches[0].target && e.touches[0].target.tagName.match(/input|textarea|select/i)) {
return;
}
eventCallback("mousedown");
scroller.doTouchStart(e.touches, e.timeStamp);

if (preventDefault) {
e.preventDefault();
}
// here , we want to manully prevent default, so we
// set passive to false
// see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
document.addEventListener("touchmove", touchmove, { passive: false });
}
function touchmove(e) {
eventCallback("mousemove");
scroller.doTouchMove(e.touches, e.timeStamp, e.scale);
e.preventDefault();
}
function touchend(e) {
eventCallback("mouseup");
scroller.doTouchEnd(e.timeStamp);
document.removeEventListener("touchmove", touchmove);
}
function touchcancel(e) {
scroller.doTouchEnd(e.timeStamp);
Expand Down Expand Up @@ -2340,17 +2344,13 @@ function listenContainer(container, scroller, eventCallback, zooming, preventDef

container.addEventListener("touchstart", touchstart, false);

document.addEventListener("touchmove", touchmove, false);

document.addEventListener("touchend", touchend, false);

document.addEventListener("touchcancel", touchcancel, false);

destroy = function destroy() {
container.removeEventListener("touchstart", touchstart, false);

document.removeEventListener("touchmove", touchmove, false);

document.removeEventListener("touchend", touchend, false);

document.removeEventListener("touchcancel", touchcancel, false);
Expand Down
2 changes: 1 addition & 1 deletion dist/vuescroll.min.js

Large diffs are not rendered by default.

14 changes: 8 additions & 6 deletions src/third-party/scroller/listener.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export function listenContainer(container, scroller, eventCallback, zooming, preventDefault) {
let destroy = null;
let timeoutId = null;
// for touch
function touchstart(e) {
// Don't react if initial down happens on a form element
Expand All @@ -8,18 +9,23 @@ export function listenContainer(container, scroller, eventCallback, zooming, pre
}
eventCallback("mousedown");
scroller.doTouchStart(e.touches, e.timeStamp);

if (preventDefault) {
e.preventDefault();
}
// here , we want to manully prevent default, so we
// set passive to false
// see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
document.addEventListener("touchmove", touchmove, { passive: false });
}
function touchmove(e) {
eventCallback("mousemove");
scroller.doTouchMove(e.touches, e.timeStamp, e.scale);
e.preventDefault();
}
function touchend(e) {
eventCallback("mouseup");
scroller.doTouchEnd(e.timeStamp);
document.removeEventListener("touchmove", touchmove);
}
function touchcancel(e) {
scroller.doTouchEnd(e.timeStamp);
Expand Down Expand Up @@ -70,17 +76,13 @@ export function listenContainer(container, scroller, eventCallback, zooming, pre

container.addEventListener("touchstart", touchstart, false);

document.addEventListener("touchmove", touchmove, false);

document.addEventListener("touchend", touchend, false);

document.addEventListener("touchcancel",touchcancel , false);

destroy = function() {
container.removeEventListener("touchstart", touchstart, false);

document.removeEventListener("touchmove", touchmove, false);


document.removeEventListener("touchend", touchend, false);

document.removeEventListener("touchcancel",touchcancel , false);
Expand Down

0 comments on commit 53148ed

Please # to comment.