ff-stream-web

git clone git://archive.git.mtrnord.blog/MTRNord/ff-stream-web.git
Log | Files | Refs | README | LICENSE

commit ede580c5f7be8c9a122da627da9420839fc7934e
parent 79e557555e13a4728a2bc58761df623a9e7720e8
Author: Konstantin Tarkus <koistya@gmail.com>
Date:   Sat, 20 Feb 2016 22:45:59 +0300

Merge pull request #449 from koistya/ga

Update Google Analytics tracking code
Diffstat:
Msrc/client.js | 6++++++
Msrc/components/Html/Html.js | 19+++++++------------
2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/client.js b/src/client.js @@ -35,6 +35,10 @@ const context = { }, }; +// Google Analytics tracking. Don't send 'pageview' event after the first +// rendering, as it was already sent by the Html component. +let trackPageview = () => trackPageview = () => window.ga('send', 'pageview'); + function render(state) { Router.dispatch(state, (newState, component) => { ReactDOM.render(component, appContainer, () => { @@ -45,6 +49,8 @@ function render(state) { window.scrollTo(0, 0); } + trackPageview(); + // Remove the pre-rendered CSS because it's no longer used // after the React app is launched if (cssContainer) { diff --git a/src/components/Html/Html.js b/src/components/Html/Html.js @@ -10,6 +10,11 @@ import React, { Component, PropTypes } from 'react'; import { analytics } from '../../config'; +// https://analytics.google.com/ +const trackingCode = + `window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;` + + `ga('create','${analytics.google.trackingId}','auto');ga('send','pageview')`; + class Html extends Component { static propTypes = { @@ -25,17 +30,6 @@ class Html extends Component { description: '', }; - trackingCode() { - return ({ __html: - `(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=` + - `function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;` + - `e=o.createElement(i);r=o.getElementsByTagName(i)[0];` + - `e.src='https://www.google-analytics.com/analytics.js';` + - `r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));` + - `ga('create','${analytics.google.trackingId}','auto');ga('send','pageview');`, - }); - } - render() { return ( <html className="no-js" lang=""> @@ -51,7 +45,8 @@ class Html extends Component { <body> <div id="app" dangerouslySetInnerHTML={{ __html: this.props.body }} /> <script src={this.props.entry}></script> - <script dangerouslySetInnerHTML={this.trackingCode()} /> + <script dangerouslySetInnerHTML={{ __html: trackingCode }} /> + <script src="https://www.google-analytics.com/analytics.js" async defer /> </body> </html> );