Skip to content

Instantly share code, notes, and snippets.

@QuintinAdam
Created September 29, 2014 06:27
Show Gist options
  • Save QuintinAdam/a192efeef2b1b2680f32 to your computer and use it in GitHub Desktop.
Save QuintinAdam/a192efeef2b1b2680f32 to your computer and use it in GitHub Desktop.
class @GoogleAnalytics
@load: ->
# Google Analytics depends on a global _gaq array. window is the global scope.
window._gaq = []
window._gaq.push ["_setAccount", GoogleAnalytics.analyticsId()]
# Create a script element and insert it in the DOM
ga = document.createElement("script")
ga.type = "text/javascript"
ga.async = true
ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js"
firstScript = document.getElementsByTagName("script")[0]
firstScript.parentNode.insertBefore ga, firstScript
# If Turbolinks is supported, set up a callback to track pageviews on page:change.
# If it isn't supported, just track the pageview now.
if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
document.addEventListener "page:change", (->
GoogleAnalytics.trackPageview()
), true
else
GoogleAnalytics.trackPageview()
@trackPageview: (url) ->
unless GoogleAnalytics.isLocalRequest() || GoogleAnalytics.isDevRequest() || GoogleAnalytics.isStagingRequest()
if url
window._gaq.push ["_trackPageview", url]
else
window._gaq.push ["_trackPageview"]
window._gaq.push ["_trackPageLoadTime"]
@isLocalRequest: ->
GoogleAnalytics.documentDomainIncludes "local"
@isDevRequest: ->
GoogleAnalytics.documentDomainIncludes ".dev"
@isStagingRequest: ->
GoogleAnalytics.documentDomainIncludes "staging"
@documentDomainIncludes: (str) ->
document.domain.indexOf(str) isnt -1
@analyticsId: ->
# your google analytics ID(s) here...
''
GoogleAnalytics.load()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment