Ik heb een onepage pagina en heb standaard analytics goed werken. Echter is mijn bouche rate erg hoog doordat er maar 1 pagina is. en weet je eigenlijk niet wat de gebruiker ziet of tot hoe ver de gebruiker komt. Ik las op internet dat je een code kunt gebruiken om dit te verhelpen: ga('send', 'pageview', ‘/about') https://develop..._pageviews
Hier ook nog een website die goed beschrijft wat ik wil:
[url]https://www.macaw.nl/weblog/2013/10/google-analytics-op-een-single-page-application [/url]
Ik heb het geprobeerd, maar werkte bij mij niet. Ik heb verschillende manieren geprobeerd maar het werkte niet. oa op deze manier... onscroll="ga('send', 'pageview', ‘/about’)"
dit is de code van het stukje /about op mijn onepager:
###############
Waar moet ik de code plaatsen en is de code die ik gebruik juist?
Zou iemand mij kunnen helpen en het stukje hierboven kunnen voorzien van de juiste cade om /about te weergeven in analytics.
Maar heb al heel veel combies geprobeerd en beschrijvingen gelezen en helaas nog niet gelukt. Daarom deze post...
Als ik het in de HTML code zou moeten schrijven zet ik het als volgt neer. Dit omdat je in dezelfde DIV ook een animatie aanroept die pas geladen wordt als het in het zicht is. Ook heb ik het met onscroll= geprobeerd. Voor jou is mijn fout misschien heel eenvoudig te verklaren, maar ik snap niet dat de virtuele pageview niet doorkomt...
Thomas - 22/05/2016 16:05 (laatste wijziging 25/05/2016 15:01)
Moderator
Euh, er zal op een of andere manier een event getriggerd moeten worden op het moment dat een bepaald stuk content op je scherm zichtbaar is. Hier koppel je dan vervolgens de set + send commando's aan. "onscroll" vertelt je niet zoveel omdat dit je niet vertelt wat iemand op enig moment ziet. Daarnaast bombardeer je daarmee (onscroll) waarschijnlijk GA ook met set+send data op het moment dat je aan het scrollen bent.
Stap 1 is dus een methode voor detectie (in JavaScript) wat er op enig moment op het scherm zichtbaar is (of liever gezegd, wanneer dit verandert). Een van de manieren is het dynamisch aanpassen van de #hashtag in de URL, dit event kan vervolgens gevangen worden in jQuery middels:
Dit is trouwens wat ongeveer (precies?) gebeurt op de Google pagina: je scrollt door het artikel heen en de hash + de navigatie verandert. Aan deze events zou je je pagehits registratie kunnen hangen.
Rest ons nog een manier om dynamisch de hash te veranderen wanneer je door een pagina scrollt.
Wat je exact wilt doorgeven aan GA kan in principe afwijken van het id van de hashtag. Deze informatie zou je dan bijvoorbeeld uit een data-attribuut kunnen halen maar dat zijn implementatiedetails.
Met het bovenstaande heb je dus een "plan" om te bereiken wat je wilt. Probeer het eens uit.
---
EDIT: voor de geinteresseerden hieronder een oplossing:
<!--
http://www.sitemasters.be/forum/11/41546/HTML_&_CSS/one_page_%28SPA%29_analytics_ga%28send,_pageview,_%E2%80%98_about%29_
further reading:
http://stackoverflow.com/questions/5315659/jquery-change-hash-while-scrolling-down-page
Notification from FireFox console:
This site appears to use a scroll-linked positioning effect.
This may not work well with asynchronous panning;
see https://developers.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects
for further details and to join the discussion on related tools and features!
Some good ideas:
http://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document
http://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used
http://stackoverflow.com/questions/4570093/how-to-get-notified-about-changes-of-the-history-via-history-pushstate
http://stackoverflow.com/questions/13098988/trigger-window-scroll
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hashtag change</title>
<!-- add jquery, consider using a local copy instead of relying on a CDN -->
<script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
<!-- some markup -->
<style type="text/css">
body { margin: 0; font-family: sans-serif; font-size: 12pt; }
h1 { margin: 0; }
section#home { background-color: #ccccff; }
section#about { background-color: #ccffcc; }
section#portfolio { background-color: #ffcccc; }
section#contact { background-color: #ffffcc; }
</style>
</head>
<body>
<!-- split the various parts up in sections, identified by an id -->
<div>
<section id="home">
<h1>home</h1>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</section>
<section id="about">
<h1>about</h1>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</section>
<section id="portfolio">
<h1>portfolio</h1>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</section>
<!-- in order to detect scrolling into this last section MAKE SURE this section has an appropriate -->
<!-- minimal height or add a footer bumper that has sufficient size (may depend on screen size) -->
<section id="contact">
<h1>contact</h1>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</section>
</div>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
// calculate offsets and height of sections so we don't have to query the DOM while scrolling...
// @todo recalculate when someone resizes the page
var sections = []; // id => [top, bottom]
$('section').each(function() {
sections[$(this).attr('id')] = [
$(this).offset().top,
$(this).offset().top + $(this).height() - 1
];
});
// keep track of current hash so we don't register a section hit when we are already in that section
var currentHash = '';
$(window).scroll(function() {
currentTop = $(document).scrollTop();
for (id in sections) {
if (
sections[id][0] < currentTop + 50 // add a suitable margin
&&
sections[id][1] > currentTop + 50 // add a suitable margin
) {
if (id != currentHash) {
// pushState vs replaceState? pushState keeps a history, replaceState does not
// unfortunately, does not seem to trigger hashchange event... but, we don't need that
// since we are setting the hash ourselves, so we know when it occurs
if (history.replaceState) {
history.replaceState(null, null, '#'+id);
} else {
location.hash = '#!'+id; // add ! to prevent jumping (and being unable to scroll)
}
currentHash = id;
// *** this is where you would insert hit registration ***
}
break; // we are done
}
}
});
// we do not even need this event, because we know when we update the hash
// this event tracking also bogs down the browser so leave it out
/*
$(window).on('hashchange', function() {
hash = window.location.hash.replace(/^#!?/, '');
console.log('hash changed to '+hash);
});
*/
// scroll to default hash, triggering the scroll function (and hit registration) below
// location.hash = '#home';
// actually, trigger scroll event, because we are not actually scrolling in this layout
// (the first section starts right at the top)
$(window).scroll();
});
//]]>
</script>
</body>
</html>