123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- (function ($) {
- Drupal.googleanalytics = {};
- $(document).ready(function() {
-
-
- $(document.body).bind("mousedown keyup touchstart", function(event) {
- console.group("Running Google Analytics for Drupal.");
- console.info(event);
-
- $(event.target).closest("a,area").each(function() {
- console.info("Element '%o' has been detected. Link '%s' found.", this, this.href);
-
- if (Drupal.googleanalytics.isInternal(this.href)) {
-
- if ($(this).is('.colorbox')) {
-
- console.info("Click on .colorbox item has been detected.");
- }
-
- else if (Drupal.settings.googleanalytics.trackDownload && Drupal.googleanalytics.isDownload(this.href)) {
-
- console.info("Download url '%s' has been found. Tracked download as extension '%s'.", Drupal.googleanalytics.getPageUrl(this.href), Drupal.googleanalytics.getDownloadExtension(this.href).toUpperCase());
- ga("send", "event", "Downloads", Drupal.googleanalytics.getDownloadExtension(this.href).toUpperCase(), Drupal.googleanalytics.getPageUrl(this.href));
- }
- else if (Drupal.googleanalytics.isInternalSpecial(this.href)) {
-
- console.info("Click on internal special link '%s' has been tracked.", Drupal.googleanalytics.getPageUrl(this.href));
- ga("send", "pageview", { "page": Drupal.googleanalytics.getPageUrl(this.href) });
- }
- else {
-
- console.info("Click on internal link '%s' detected, but not tracked by click.", this.href);
- }
- }
- else {
- if (Drupal.settings.googleanalytics.trackMailto && $(this).is("a[href^='mailto:'],area[href^='mailto:']")) {
-
- console.info("Click on e-mail '%s' has been tracked.", this.href.substring(7));
- ga("send", "event", "Mails", "Click", this.href.substring(7));
- }
- else if (Drupal.settings.googleanalytics.trackOutbound && this.href.match(/^\w+:\/\//i)) {
- if (Drupal.settings.googleanalytics.trackDomainMode != 2 || (Drupal.settings.googleanalytics.trackDomainMode == 2 && !Drupal.googleanalytics.isCrossDomain(this.hostname, Drupal.settings.googleanalytics.trackCrossDomains))) {
-
- console.info("Outbound link '%s' has been tracked.", this.href);
- ga("send", "event", "Outbound links", "Click", this.href);
- }
- else {
- console.info("Internal link '%s' clicked, not tracked.", this.href);
- }
- }
- }
- });
- console.groupEnd();
- });
-
- if (Drupal.settings.googleanalytics.trackUrlFragments) {
- window.onhashchange = function() {
- console.info("Track URL '%s' as pageview. Hash '%s' has changed.", location.pathname + location.search + location.hash, location.hash);
- ga('send', 'pageview', location.pathname + location.search + location.hash);
- }
- }
-
-
- $(document).bind("cbox_complete", function () {
- var href = $.colorbox.element().attr("href");
- if (href) {
- console.info("Colorbox transition to url '%s' has been tracked.", Drupal.googleanalytics.getPageUrl(href));
- ga("send", "pageview", { "page": Drupal.googleanalytics.getPageUrl(href) });
- }
- });
- });
- Drupal.googleanalytics.isCrossDomain = function (hostname, crossDomains) {
-
- if (!crossDomains) {
- return false;
- }
- else {
- return $.inArray(hostname, crossDomains) > -1 ? true : false;
- }
- };
- Drupal.googleanalytics.isDownload = function (url) {
- var isDownload = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
- return isDownload.test(url);
- };
- Drupal.googleanalytics.isInternal = function (url) {
- var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
- return isInternal.test(url);
- };
- Drupal.googleanalytics.isInternalSpecial = function (url) {
- var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
- return isInternalSpecial.test(url);
- };
- Drupal.googleanalytics.getPageUrl = function (url) {
- var extractInternalUrl = new RegExp("^(https?):\/\/" + window.location.host, "i");
- return url.replace(extractInternalUrl, '');
- };
- Drupal.googleanalytics.getDownloadExtension = function (url) {
- var extractDownloadextension = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
- var extension = extractDownloadextension.exec(url);
- return (extension === null) ? '' : extension[1];
- };
- })(jQuery);
|