login  Naam:   Wachtwoord: 
Registreer je!
 Forum

one page (SPA) analytics ga('send', 'pageview', '/about')

Offline onepage - 22/05/2016 13:19 (laatste wijziging 16/06/2016 17:20)
Avatar van onepageNieuw lid Hi,

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:
###############

<div id=“about" class="animate-block content-block news-block">

<div class="news-block-inner container">

<div class="content-block-inner text-center">

<h2>About me</h2>

<div class="col-10-desktop no-float center-element">

<p>

###############

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.

Alvast bedankt!
OnePager
[u]

5 antwoorden

Gesponsorde links
Offline Thomas - 22/05/2016 14:03
Avatar van Thomas Moderator De code die je gebruikt volgt niet de vorm die wordt beschreven in het eerste artikel.

Daar staat:
  1. // stel handmatig virtuele pagina in (update de tracker)
  2. ga('set', 'page', '/about');
  3. // registreer een hit
  4. ga('send', 'pageview');


De manier waarop jij send() aanroept klopt volgens mij ook niet. Je probeert twee stappen op een verkeerde manier te combineren.

Volg eerst de instructies eens goed en kijk dan of het werkt zoals je wilt.
Offline onepage - 22/05/2016 15:21
Avatar van onepage Nieuw lid Okay... 

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... 

<div id=“about" class="animate-block content-block news-block" ga('set', 'page', '/new-page.html'); ga('send', 'pageview');>
<div class="news-block-inner container">
<div class="content-block-inner text-center">
<h2>About me</h2>
<div class="col-10-desktop no-float center-element">
<p>

of

<div id=“about" class="animate-block content-block news-block" onscroll="ga('set', 'page', '/new-page.html');" onscroll="ga('send', 'pageview');">
<div class="news-block-inner container">
<div class="content-block-inner text-center">
<h2>About me</h2>
<div class="col-10-desktop no-float center-element">
<p>

of

<div id=“about" class="animate-block content-block news-block" onscroll="ga('send', 'pageview', ‘/about’)">
<div class="news-block-inner container">
<div class="content-block-inner text-center">
<h2>About me</h2>
<div class="col-10-desktop no-float center-element">
<p>

of

<div id=“about" class="animate-block content-block news-block">
<script>onscroll="
ga('set', 'page', '/new-page.html');
ga('send', 'pageview');
"</script>
<div class="news-block-inner container">
<div class="content-block-inner text-center">
<h2>About me</h2>
<div class="col-10-desktop no-float center-element">
<p>
Offline Thomas - 22/05/2016 16:05 (laatste wijziging 25/05/2016 15:01)
Avatar van Thomas 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:
  1. $(window).on('hashchange', function() {
  2. // ...
  3. });

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.

Dat principe wordt hier beschreven.

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:
  1. <!--
  2. http://www.sitemasters.be/forum/11/41546/HTML_&_CSS/one_page_%28SPA%29_analytics_ga%28send,_pageview,_%E2%80%98_about%29_
  3.  
  4. further reading:
  5. http://stackoverflow.com/questions/5315659/jquery-change-hash-while-scrolling-down-page
  6.  
  7. Notification from FireFox console:
  8. This site appears to use a scroll-linked positioning effect.
  9. This may not work well with asynchronous panning;
  10. see https://developers.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects
  11. for further details and to join the discussion on related tools and features!
  12.  
  13. Some good ideas:
  14. http://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document
  15.  
  16. http://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used
  17. http://stackoverflow.com/questions/4570093/how-to-get-notified-about-changes-of-the-history-via-history-pushstate
  18. http://stackoverflow.com/questions/13098988/trigger-window-scroll
  19. -->
  20. <!DOCTYPE html>
  21. <meta charset="UTF-8">
  22. <title>hashtag change</title>
  23. <!-- add jquery, consider using a local copy instead of relying on a CDN -->
  24. <script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
  25. <!-- some markup -->
  26. <style type="text/css">
  27. body { margin: 0; font-family: sans-serif; font-size: 12pt; }
  28. h1 { margin: 0; }
  29. section#home { background-color: #ccccff; }
  30. section#about { background-color: #ccffcc; }
  31. section#portfolio { background-color: #ffcccc; }
  32. section#contact { background-color: #ffffcc; }
  33. </head>
  34.  
  35. <!-- split the various parts up in sections, identified by an id -->
  36. <div>
  37. <section id="home">
  38. <h1>home</h1>
  39. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  40. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  41. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  42. </section>
  43.  
  44. <section id="about">
  45. <h1>about</h1>
  46. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  47. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  48. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  49. </section>
  50.  
  51. <section id="portfolio">
  52. <h1>portfolio</h1>
  53. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  54. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  55. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  56. </section>
  57.  
  58. <!-- in order to detect scrolling into this last section MAKE SURE this section has an appropriate -->
  59. <!-- minimal height or add a footer bumper that has sufficient size (may depend on screen size) -->
  60. <section id="contact">
  61. <h1>contact</h1>
  62. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  63. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  64. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  65. </section>
  66. </div>
  67. <script type="text/javascript">
  68. //<![CDATA[
  69. $().ready(function() {
  70. // calculate offsets and height of sections so we don't have to query the DOM while scrolling...
  71. // @todo recalculate when someone resizes the page
  72. var sections = []; // id => [top, bottom]
  73. $('section').each(function() {
  74. sections[$(this).attr('id')] = [
  75. $(this).offset().top,
  76. $(this).offset().top + $(this).height() - 1
  77. ];
  78. });
  79.  
  80. // keep track of current hash so we don't register a section hit when we are already in that section
  81. var currentHash = '';
  82.  
  83. $(window).scroll(function() {
  84. currentTop = $(document).scrollTop();
  85. for (id in sections) {
  86. if (
  87. sections[id][0] < currentTop + 50 // add a suitable margin
  88. &&
  89. sections[id][1] > currentTop + 50 // add a suitable margin
  90. ) {
  91. if (id != currentHash) {
  92. // pushState vs replaceState? pushState keeps a history, replaceState does not
  93. // unfortunately, does not seem to trigger hashchange event... but, we don't need that
  94. // since we are setting the hash ourselves, so we know when it occurs
  95. if (history.replaceState) {
  96. history.replaceState(null, null, '#'+id);
  97. } else {
  98. location.hash = '#!'+id; // add ! to prevent jumping (and being unable to scroll)
  99. }
  100. currentHash = id;
  101. // *** this is where you would insert hit registration ***
  102. }
  103. break; // we are done
  104. }
  105. }
  106. });
  107.  
  108. // we do not even need this event, because we know when we update the hash
  109. // this event tracking also bogs down the browser so leave it out
  110. /*
  111. $(window).on('hashchange', function() {
  112. hash = window.location.hash.replace(/^#!?/, '');
  113. console.log('hash changed to '+hash);
  114. });
  115. */
  116.  
  117. // scroll to default hash, triggering the scroll function (and hit registration) below
  118. // location.hash = '#home';
  119. // actually, trigger scroll event, because we are not actually scrolling in this layout
  120. // (the first section starts right at the top)
  121. $(window).scroll();
  122. });
  123. //]]>
  124. </body>
  125. </html>
Offline Shiga - 16/06/2016 14:00
Avatar van Shiga Nieuw lid Moderators graag de titel aanpassen!
Dit zorgt ervoor dat de RSS feed corrupt raakt.

www.sitemasters.be/rss/xml/forum.xml
Bedankt door: Thomas
Offline Thomas - 16/06/2016 14:14 (laatste wijziging 16/06/2016 19:40)
Avatar van Thomas Moderator Oh lol.

Bedankt voor het melden.

Dit lijkt mij overigens iets wat in de feed-functionaliteit opgelost zou moeten worden, we zullen dit oppakken.

Actually, fk that, voor nu een quickfix.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s