From 696f11de12c671675e4b6b60f553724dadb47cfe Mon Sep 17 00:00:00 2001 From: Alberto Gasparin Date: Fri, 29 Jun 2012 13:55:53 +0200 Subject: [PATCH 1/4] Fixed possible initial lag or unrensponsiveness --- scrollfix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scrollfix.js b/scrollfix.js index 19e6d0f..f9383a1 100644 --- a/scrollfix.js +++ b/scrollfix.js @@ -9,7 +9,7 @@ var ScrollFix = function(elem) { // Variables to track inputs - var startY, startTopScroll; + var startY, startTopScroll = 0; elem = elem || document.querySelector(elem); From a541dd7e136041244849b94dd40396951de11225 Mon Sep 17 00:00:00 2001 From: Alberto Gasparin Date: Fri, 29 Jun 2012 14:07:17 +0200 Subject: [PATCH 2/4] Changed height calc in order to ignore borders --- scrollfix.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scrollfix.js b/scrollfix.js index f9383a1..233fdb4 100644 --- a/scrollfix.js +++ b/scrollfix.js @@ -25,7 +25,7 @@ var ScrollFix = function(elem) { if(startTopScroll <= 0) elem.scrollTop = 1; - if(startTopScroll + elem.offsetHeight >= elem.scrollHeight) - elem.scrollTop = elem.scrollHeight - elem.offsetHeight - 1; + if(startTopScroll + elem.clientHeight >= elem.scrollHeight) + elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1; }, false); }; \ No newline at end of file From d6200f040b30f6aab6fe9cec4773ab36613af595 Mon Sep 17 00:00:00 2001 From: Alberto Gasparin Date: Fri, 29 Jun 2012 14:52:14 +0200 Subject: [PATCH 3/4] Prevent page scroll where the content is smaller than visible area --- scrollfix.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scrollfix.js b/scrollfix.js index 233fdb4..e292118 100644 --- a/scrollfix.js +++ b/scrollfix.js @@ -9,7 +9,7 @@ var ScrollFix = function(elem) { // Variables to track inputs - var startY, startTopScroll = 0; + var startY, startTopScroll = 0, disableScroll = false; elem = elem || document.querySelector(elem); @@ -27,5 +27,15 @@ var ScrollFix = function(elem) { if(startTopScroll + elem.clientHeight >= elem.scrollHeight) elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1; + + disableScroll = (elem.scrollHeight <= elem.clientHeight); }, false); + + // Page should not scroll when the content does not fill the area + elem.addEventListener('touchstart', function(event){ + if(disableScroll) { + event.preventDefault(); + } + }, false); + }; \ No newline at end of file From 7db868a7479dc4d1783ee461c220bc2c3685ef31 Mon Sep 17 00:00:00 2001 From: Alberto Gasparin Date: Fri, 29 Jun 2012 17:06:49 +0200 Subject: [PATCH 4/4] Fixed wrong event binding Touchstart will prevent input focus --- scrollfix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scrollfix.js b/scrollfix.js index e292118..182bc46 100644 --- a/scrollfix.js +++ b/scrollfix.js @@ -32,7 +32,7 @@ var ScrollFix = function(elem) { }, false); // Page should not scroll when the content does not fill the area - elem.addEventListener('touchstart', function(event){ + elem.addEventListener('touchmove', function(event){ if(disableScroll) { event.preventDefault(); }