Sha256: 2551b8e5e773a0b560beb30ad325d2202f6cf1f75a29a872f114209b8d752a40

Contents?: true

Size: 1.83 KB

Versions: 157

Compression:

Stored size: 1.83 KB

Contents

window.GOVUK = window.GOVUK || {}
window.GOVUK.Modules = window.GOVUK.Modules || {};

(function (Modules) {
  function CrossDomainTracking ($module) {
    this.$module = $module
    Modules.crossDomainLinkedTrackers = Modules.crossDomainLinkedTrackers || []
  }

  CrossDomainTracking.prototype.init = function () {
    if (this.isTrackable(this.$module)) {
      this.addLinkedTrackerDomain(this.$module)
    } else {
      this.findTrackableElements()
    }
  }

  CrossDomainTracking.prototype.isTrackable = function (element) {
    if (element.getAttribute('href') && element.getAttribute('data-tracking-code') && element.getAttribute('data-tracking-name')) {
      return true
    }
  }

  CrossDomainTracking.prototype.findTrackableElements = function () {
    var links = this.$module.querySelectorAll('a')
    for (var i = 0; i < links.length; i++) {
      if (this.isTrackable(links[i])) {
        this.addLinkedTrackerDomain(links[i])
      }
    }
  }

  CrossDomainTracking.prototype.addLinkedTrackerDomain = function (element) {
    var name = element.getAttribute('data-tracking-name')
    var code = element.getAttribute('data-tracking-code')
    var trackEvent = (element.getAttribute('data-tracking-track-event') === 'true')

    if (window.GOVUK.analytics !== 'undefined') {
      if (Modules.crossDomainLinkedTrackers.indexOf(name) === -1) {
        var hostname = element.hostname
        window.GOVUK.analytics.addLinkedTrackerDomain(code, name, hostname)
        Modules.crossDomainLinkedTrackers.push(name)
      }

      if (trackEvent) {
        element.addEventListener('click', function (e) {
          var target = e.target
          window.GOVUK.analytics.trackEvent('External Link Clicked', target.textContent, { trackerName: name })
        })
      }
    }
  }

  Modules.CrossDomainTracking = CrossDomainTracking
})(window.GOVUK.Modules)

Version data entries

157 entries across 157 versions & 1 rubygems

Version Path
govuk_publishing_components-40.1.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-40.0.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.5 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.4 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.3 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.2 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.1 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.2.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.1.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-39.0.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-38.4.2 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-38.1.1 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-38.1.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-38.0.1 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-38.0.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-37.10.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-37.9.1 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-37.9.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-37.8.1 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js
govuk_publishing_components-37.8.0 app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js