From 70ad3b304b99298ce99694c4f3db3bd16c3480e6 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:04:29 +0100 Subject: [PATCH 1/9] add calculated marks with custom gap - default is 25 --- jquery.scrolldepth.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index b60a888..10e908c 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -16,7 +16,8 @@ pixelDepth: true, nonInteraction: true, gaGlobal: false, - gtmOverride: false + gtmOverride: false, + markGap: 25 }; var $window = $(window), @@ -127,14 +128,12 @@ } - function calculateMarks(docHeight) { - return { - '25%' : parseInt(docHeight * 0.25, 10), - '50%' : parseInt(docHeight * 0.50, 10), - '75%' : parseInt(docHeight * 0.75, 10), - // Cushion to trigger 100% event in iOS - '100%': docHeight - 5 - }; + function calculateMarks(docHeight, gap) { + var marks = {}; + for (var i = 1; i <= (100/gap); i++) + marks[gap*i+'%'] = parseInt(docHeight * (i/gap*i), 10); + marks['100%'] = docHeight - 5; + return marks; } function checkMarks(marks, scrollDistance, timing) { @@ -273,7 +272,7 @@ scrollDistance = $window.scrollTop() + winHeight, // Recalculate percentage marks - marks = calculateMarks(docHeight), + marks = calculateMarks(docHeight, options.markGap), // Timing timing = +new Date - startTime; From b8ff85dc292fd26184bd424398ca51c2c7b42185 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:09:16 +0100 Subject: [PATCH 2/9] custom marks array - indipendent from markGap --- jquery.scrolldepth.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index 10e908c..780904a 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -17,7 +17,10 @@ nonInteraction: true, gaGlobal: false, gtmOverride: false, - markGap: 25 + markGap: 25, + customMarks: [ + 10, 30, 75, 80, 91 + ] }; var $window = $(window), @@ -128,11 +131,20 @@ } - function calculateMarks(docHeight, gap) { + function calculateMarks(docHeight, gap, customMarks) { var marks = {}; + gap = (!gap) ? 25 : gap; + for (var i = 1; i <= (100/gap); i++) - marks[gap*i+'%'] = parseInt(docHeight * (i/gap*i), 10); + marks[gap*i+'%'] = parseInt(docHeight*gap/100, 10); marks['100%'] = docHeight - 5; + + if (customMarks.constructor === Array) { + customMarks.forEach(function (mark) { + marks[mark + '%'] = parseInt(docHeight * mark / 100, 10); + }); + } + return marks; } @@ -272,7 +284,7 @@ scrollDistance = $window.scrollTop() + winHeight, // Recalculate percentage marks - marks = calculateMarks(docHeight, options.markGap), + marks = calculateMarks(docHeight, options.markGap, options.customMarks), // Timing timing = +new Date - startTime; From 1f563d53849ec7810e42aa80788ae24f20ec5fd6 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:10:58 +0100 Subject: [PATCH 3/9] fix calc and mark obj creation --- jquery.scrolldepth.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index 780904a..564e93b 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -19,7 +19,7 @@ gtmOverride: false, markGap: 25, customMarks: [ - 10, 30, 75, 80, 91 + 10, 30, 80, 91 ] }; @@ -135,9 +135,9 @@ var marks = {}; gap = (!gap) ? 25 : gap; - for (var i = 1; i <= (100/gap); i++) - marks[gap*i+'%'] = parseInt(docHeight*gap/100, 10); - marks['100%'] = docHeight - 5; + for (var i = 1; i <= (100/gap); i++) { + marks[gap*i+'%'] = parseInt(docHeight*gap*i/100, 10); + } if (customMarks.constructor === Array) { customMarks.forEach(function (mark) { @@ -145,6 +145,8 @@ }); } + marks['100%'] = docHeight - 5; + return marks; } From 5a3b6ac6018f04a1b4ec475dab7d5bc10d6f6162 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:13:22 +0100 Subject: [PATCH 4/9] add custom marks on index test and remove them from script --- jquery.scrolldepth.js | 4 +--- test/index.html | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index 564e93b..cd90927 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -18,9 +18,7 @@ gaGlobal: false, gtmOverride: false, markGap: 25, - customMarks: [ - 10, 30, 80, 91 - ] + customMarks: [] }; var $window = $(window), diff --git a/test/index.html b/test/index.html index f886d6c..9dfc372 100644 --- a/test/index.html +++ b/test/index.html @@ -45,7 +45,8 @@

jQuery Scroll Depth Test Page

elements: ['#main'], userTiming: false, percentage: false, - pixelDepth: false + pixelDepth: false, + customMarks: [10, 30, 80, 91], //gtmOverride: true, //eventHandler: function(data) { //log(data) @@ -53,4 +54,4 @@

jQuery Scroll Depth Test Page

}); - \ No newline at end of file + From 87fb1dfd9a589c1e4549525bfd417c13e4bc0e4d Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:04:29 +0100 Subject: [PATCH 5/9] add calculated marks with custom gap - default is 25 --- jquery.scrolldepth.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index bad5774..72ed362 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -32,7 +32,8 @@ pixelDepth: true, nonInteraction: true, gaGlobal: false, - gtmOverride: false + gtmOverride: false, + markGap: 25 }; var $window = $(window), @@ -143,14 +144,12 @@ } - function calculateMarks(docHeight) { - return { - '25%' : parseInt(docHeight * 0.25, 10), - '50%' : parseInt(docHeight * 0.50, 10), - '75%' : parseInt(docHeight * 0.75, 10), - // Cushion to trigger 100% event in iOS - '100%': docHeight - 5 - }; + function calculateMarks(docHeight, gap) { + var marks = {}; + for (var i = 1; i <= (100/gap); i++) + marks[gap*i+'%'] = parseInt(docHeight * (i/gap*i), 10); + marks['100%'] = docHeight - 5; + return marks; } function checkMarks(marks, scrollDistance, timing) { @@ -288,8 +287,8 @@ winHeight = window.innerHeight ? window.innerHeight : $window.height(), scrollDistance = $window.scrollTop() + winHeight, - // Recalculate percentage marks - marks = calculateMarks(docHeight), + // Recalculate percentage marks + marks = calculateMarks(docHeight, options.markGap), // Timing timing = +new Date - startTime; @@ -318,4 +317,4 @@ }; -})); \ No newline at end of file +})); From 22f42c261fd884570f473f8db44b6121c822ebac Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:09:16 +0100 Subject: [PATCH 6/9] custom marks array - indipendent from markGap --- jquery.scrolldepth.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index 72ed362..b3fbd1a 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -33,7 +33,10 @@ nonInteraction: true, gaGlobal: false, gtmOverride: false, - markGap: 25 + markGap: 25, + customMarks: [ + 10, 30, 75, 80, 91 + ] }; var $window = $(window), @@ -144,11 +147,20 @@ } - function calculateMarks(docHeight, gap) { + function calculateMarks(docHeight, gap, customMarks) { var marks = {}; + gap = (!gap) ? 25 : gap; + for (var i = 1; i <= (100/gap); i++) - marks[gap*i+'%'] = parseInt(docHeight * (i/gap*i), 10); + marks[gap*i+'%'] = parseInt(docHeight*gap/100, 10); marks['100%'] = docHeight - 5; + + if (customMarks.constructor === Array) { + customMarks.forEach(function (mark) { + marks[mark + '%'] = parseInt(docHeight * mark / 100, 10); + }); + } + return marks; } @@ -288,7 +300,7 @@ scrollDistance = $window.scrollTop() + winHeight, // Recalculate percentage marks - marks = calculateMarks(docHeight, options.markGap), + marks = calculateMarks(docHeight, options.markGap, options.customMarks), // Timing timing = +new Date - startTime; From 08d727376ebe60d848678ad500c02ed8bbe61699 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:10:58 +0100 Subject: [PATCH 7/9] fix calc and mark obj creation --- jquery.scrolldepth.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index b3fbd1a..f88595c 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -35,7 +35,7 @@ gtmOverride: false, markGap: 25, customMarks: [ - 10, 30, 75, 80, 91 + 10, 30, 80, 91 ] }; @@ -151,8 +151,9 @@ var marks = {}; gap = (!gap) ? 25 : gap; - for (var i = 1; i <= (100/gap); i++) - marks[gap*i+'%'] = parseInt(docHeight*gap/100, 10); + for (var i = 1; i <= (100/gap); i++) { + marks[gap*i+'%'] = parseInt(docHeight*gap*i/100, 10); + } marks['100%'] = docHeight - 5; if (customMarks.constructor === Array) { From b976669df54710db20baacb24b5193619b226c77 Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Mon, 28 Dec 2015 21:13:22 +0100 Subject: [PATCH 8/9] add custom marks on index test and remove them from script --- jquery.scrolldepth.js | 4 +--- test/index.html | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index f88595c..487487f 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -34,9 +34,7 @@ gaGlobal: false, gtmOverride: false, markGap: 25, - customMarks: [ - 10, 30, 80, 91 - ] + customMarks: [] }; var $window = $(window), diff --git a/test/index.html b/test/index.html index f886d6c..9dfc372 100644 --- a/test/index.html +++ b/test/index.html @@ -45,7 +45,8 @@

jQuery Scroll Depth Test Page

elements: ['#main'], userTiming: false, percentage: false, - pixelDepth: false + pixelDepth: false, + customMarks: [10, 30, 80, 91], //gtmOverride: true, //eventHandler: function(data) { //log(data) @@ -53,4 +54,4 @@

jQuery Scroll Depth Test Page

}); - \ No newline at end of file + From 842155c48aa87b848685c8e5ef39bddb5c76a17c Mon Sep 17 00:00:00 2001 From: Andrea Cognini Date: Tue, 14 Jun 2016 11:42:10 +0200 Subject: [PATCH 9/9] moved mark 100% on bottom --- jquery.scrolldepth.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jquery.scrolldepth.js b/jquery.scrolldepth.js index 487487f..f07ee83 100644 --- a/jquery.scrolldepth.js +++ b/jquery.scrolldepth.js @@ -152,7 +152,6 @@ for (var i = 1; i <= (100/gap); i++) { marks[gap*i+'%'] = parseInt(docHeight*gap*i/100, 10); } - marks['100%'] = docHeight - 5; if (customMarks.constructor === Array) { customMarks.forEach(function (mark) { @@ -160,6 +159,8 @@ }); } + marks['100%'] = docHeight - 5; + return marks; }