Track all outbound links in Google Analytics

前端 未结 7 1819
小蘑菇
小蘑菇 2021-01-31 20:06

I\'ve been using a script to track outbound links for a couple of months now. The script WORKS, but in the report generated by Google Analytics many UR

7条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-31 20:49

    Fresheyeball answer is the correct one, but because many people have been asking for a complete answer, I'm going to post the final script with Fresheyeball's contribution.

    The short version

    // Outbound Link Tracking with Google Analytics
    // Wallace Sidhrée - http://dreamyguy.com/
    // Requires jQuery 1.7 or higher (use .live if using a lower version)
    $(function() {
        $("a").on('click',function(e){
            var url = $(this).attr("href");
            if (e.currentTarget.host != window.location.host) {
                _gat._getTrackerByName()._trackEvent("Outbound Links", e.currentTarget.host.replace(':80',''), url, 0);
                if (e.metaKey || e.ctrlKey || this.target == "_blank") {
                    var newtab = true;
                }
                if (!newtab) {
                    e.preventDefault();
                    setTimeout('document.location = "' + url + '"', 100);
                }
            }
        });
    });
    

    The complete version (commented and 'debug-able')

    // Outbound Link Tracking with Google Analytics
    // Wallace Sidhrée - http://dreamyguy.com/
    // Requires jQuery 1.7 or higher (use .live if using a lower version)
    $(function() {
        $("a").on('click',function(e){
            var url = $(this).attr("href");
            // Console logs shows the domain name of the link being clicked and the current window
            // console.log('e.currentTarget.host: ' + e.currentTarget.host);
            // console.log('window.location.host: ' + window.location.host);
            // If the domains names are different, it assumes it is an external link
            // Be careful with this if you use subdomains
            if (e.currentTarget.host != window.location.host) {
                // console.log('external link click');
                // Outbound link! Fires the Google tracker code.
                _gat._getTrackerByName()._trackEvent("Outbound Links", e.currentTarget.host.replace(':80',''), url, 0);
                // Checks to see if the ctrl or command key is held down
                // which could indicate the link is being opened in a new tab
                // Also checks if target="_blank" on the link tag which indicates it should always be opened in a new tab
                if (e.metaKey || e.ctrlKey || this.target == "_blank")) {
                    // console.log('ctrl or meta key pressed');
                    var newtab = true;
                }
                // If it is not a new tab, we need to delay the loading
                // of the new link for a just a second in order to give the
                // Google track event time to fully fire
                if (!newtab) {
                    // console.log('default prevented');
                    e.preventDefault();
                    // console.log('loading link after brief timeout');
                    setTimeout('document.location = "' + url + '"', 100);
                }
            }
            /*
            else {
                console.log('internal link click');
            }
            */
        });
    });
    

提交回复
热议问题