Obecnie 262 forumowiczów jest online
Porozmawiaj na temat implementacji kodu śledzenia w wielu domenach, ustaw śledzenie zdarzeń. Dowiedz się, czym jest Universal Analytics i jak korzystać z Menedżera tagów Google.
Poprowadź mnie
star_border
Odpowiedz

Scroll Depth Tracking

[ Edytowane ]
Student ✭ ✭ ✭

Drodzy forumowicze,

 

korzystam z tego kodu do mierzenia scrollowania:
https://github.com/robflaherty/jquery-scrolldepth/blob/master/jquery.scrolldepth.js

 

Chciałbym ekran podzielić na więcej cześci i wysyłać eventy co 10%, przy zmianie kodu w tym miejcu:

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
};
}

 

na odpowiednio:

'10%' : parseInt(docHeight * 0.1, 10), itd
finał jest taki, że nadal wysyła mi tylko 4 pierwsze eventy, czyli jak podzielę co 20% to ostatni jest 80%, jak podzielę co 10% to ostatnim jest 40%.

 

Czy jest ktoś obeznany mocniej w skryptach, kto poradzi co podmienić jeszcze w kodzie?

Odpowiedź eksperta 2verified_user

Zaakceptowane rozwiązania
Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez autora tematu: Marcin Bernad
marca 2016

Dot.: Scroll Depth Tracking

[ Edytowane ]
Wschodząca Gwiazda

Przetestowałem ten skrypt jeszcze raz, ale tym razem dla wszystkich procentów i się okazało, że działa tylko dla pierwszych 4-ech punktów (10% do 40%).


Więc trzeba jeszcze zmodyfikować ten kod:
if (cache.length >= options.elements.length + (options.percentage ? 4:0)) {

zmieniają linię na:
if (cache.length >= options.elements.length + (options.percentage ? 10:0)) {

 

Tak więc jedną rzecz Dominik dobrze wypatrzył Emotikon: Szczęśliwy

Tomasz Ciepłucha

Wyświetl rozwiązanie w oryginalnym poście


Wszystkie odpowiedzi

Dot.: Scroll Depth Tracking

[ Edytowane ]
Najlepszy Współtwórca

Na pewno Tomasz mógłby pomóc. Nie jestem programistą ale obstawiam, że w kodzie jest jakieś odwołanie tylko do 4 wartości, które mają pojawiać się jako zdarzenie.

Widzę dwa takie miejsca w kodzie, ale nie chciałbym sugerować, że to to Emotikon: Szczęśliwy

Przyznam szczerze, że w podobnych przypadkach jak Ty masz, po prostu eksperymentuje z modyfikacją kodu.
Zobacz w linii 163 jest odniesienie do 250 co mogłoby sugerować 1/4 - to tylko przypuszczenie. Ustawiłbym na 100 i przetestował.

Następnie w linii 282 4:0 co też mogłoby sugerować tylko 4 wartości w danych - to również przypuszczenie Emotikon: Szczęśliwy Zmieniłbym na 10:0 i przetestował.

Bo rozumiem, że kod uzupełniłeś sobie jako

'10%' : parseInt(docHeight * 0.10, 10),
'20%' : parseInt(docHeight * 0.20, 10),
'30%' : parseInt(docHeight * 0.30, 10),
'40%' : parseInt(docHeight * 0.40, 10),
'50%' : parseInt(docHeight * 0.50, 10),
'60%' : parseInt(docHeight * 0.60, 10),
'70%' : parseInt(docHeight * 0.70, 10),
'80%' : parseInt(docHeight * 0.80, 10),
'90%' : parseInt(docHeight * 0.90, 10),


Poczekałbym na wypowiedź Tomka. Emotikon: Szczęśliwy

Dominik Myślak

Dot.: Scroll Depth Tracking

Student ✭ ✭ ✭
Już w podobny sposób błądziłem we mgle, więc czekamna jakiś pewnik Emotikon: Szczęśliwy

Dot.: Scroll Depth Tracking

Wschodząca Gwiazda

 

Sprawdziłem to i po modyfikacji kodu dokładnie tak jak napisałeś wszystko działa prawidłowo.
Wprawdzie zrobiłem test tylko dla 10%, ale z reszta będzie na pewno to samo.

 

Więc albo zmian dokonałeś w niewłaściwym pliku (może masz kilka wersji?) albo przeglądarka ładuje Ci skrypt z pamięci podręcznej.

 

Wstaw sobie do tego pliku (jquery.scrolldepth.js) na początku funkcji sendEvent taką linijkę:
console.log(label);

 

żeby wyglądało to tak:

 

function sendEvent(action, label, scrollDistance, timing) {
console.log(label);
if (standardEventHandler) {

 

 

i po wejściu na stronę otwórz konsolę by zobaczyć czy przy scrollowaniu coś Ci się pojawia.

Powinny pojawiać Ci się procenty.... 10%, 20%, ..... 

 

Jak nic Ci się nie pojawia to znaczy że masz ten problem, o którym napisałem na początku. 

 

A tak swoją drogą według mnie ten skrypt coś źle liczy.

 

Zrobiłem sobie dokument o wysokości dokładnie 10945 pikseli. Specjalnie tyle,  bo moje okno przeglądarki ma wysokość 945 pikseli.

Po odjęciu tych dwóch wartości mój scroll może się przemieszczać od 0 do 10 tys. px, a zatem zdarzenia powinny być uruchamiane przy osiąganiu pozycji co 2500 px, a niestety tak nie jest, gdyż odpalają się przy wartościach 1800, 4600, 7300, a ostatni w ogóle się nie odpala mimo przescrollowania na sam dół dokumentu.

 

Tomasz Ciepłucha
Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez autora tematu: Marcin Bernad
marca 2016

Dot.: Scroll Depth Tracking

[ Edytowane ]
Wschodząca Gwiazda

Przetestowałem ten skrypt jeszcze raz, ale tym razem dla wszystkich procentów i się okazało, że działa tylko dla pierwszych 4-ech punktów (10% do 40%).


Więc trzeba jeszcze zmodyfikować ten kod:
if (cache.length >= options.elements.length + (options.percentage ? 4:0)) {

zmieniają linię na:
if (cache.length >= options.elements.length + (options.percentage ? 10:0)) {

 

Tak więc jedną rzecz Dominik dobrze wypatrzył Emotikon: Szczęśliwy

Tomasz Ciepłucha

Dot.: Scroll Depth Tracking

Student ✭ ✭ ✭
Faktycznie z pamięci podręcznej ładowało.

Wyczyszczone, podmienione i działa.
Dzięki!