0

私はおそらくleanstartupcircle.comonClickでjavascriptを台無しにしました。属性でタグ付けしたすべてのアウトバウンドリンクにJavaScriptを使用したリンクトラッキングを追加しようとしています。私がしたことは、機能を妨げ、おそらくイベントをトリガーしないことです。target="_blank"

もう1つの情報target="_blank"は、これらのサーバーにgoogle analytics initコードを表示していないため、ステージングと開発で正常に機能しています。そのため、JavaScriptが正しくないと思います。

より良い目を使うことができます。私は何が間違っているのですか?

function parseUrl( url ) {
    var a = document.createElement('a');
    a.href = url;
    return a;
};

function getDomain( url ) {
    hostname = parseUrl(link).hostname
    splitHostname = hostname.split('.');
    if (splitHostname.length > 2) {
        domain = splitHostname[1] // Most likely the domain
    } else {
        domain = splitHostname[0]
    };
    return domain;
};

function trackLinks() {
    // Setup outbound link tracking and push events to GA based on link attribute linkTracking
    $('a').each(function () {
        link = $(this).attr('href');
        linkTracking = $(this).attr('linkTracking');
        if (linkTracking) {
            category = linkTracking.toLowerCase()
            action = getDomain(link);
            label = link;
            $(this).attr('target', '_blank').attr('onClick', '_gaq.push(["_link", "' + link + '"]); return false; ' +
                                                             'recordOutboundLink(this, "' + category + '", "' + action + '", "' + label + '"); return false;');
        };
    });
};

これが私のグーグルアナリティクスコードです。クロスドメイントラッキングを使用するために、グーグルによって提案されたいくつかの変更があります:

var _gaq = _gaq || [];
var pluginUrl =
 '//www.google-analytics.com/plugins/ga/inpage_linkid.js';
_gaq.push(['_require', 'inpage_linkid', pluginUrl]); // Enhanced Link Attribution
_gaq.push(['_setAccount', 'UA-30468280-1']);
_gaq.push(['_setDomainName', 'leanstartupcircle.com']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

// Delay outbound page load in order to record outbound links
function recordOutboundLink(link, category, action) {
  try {
    var myTracker=_gat._getTrackerByName();
    _gaq.push(['myTracker._trackEvent', category , action ]);
    setTimeout('document.location = "' + link.href + '"', 100)
  }catch(err){}
}
4

2 に答える 2

1

falseを返すと、クリックアクションがキャンセルされます。これは、リンクが機能しないことを意味します。また、return falseが終了するため、呼び出す2番目のメソッドは起動しません。

別の方法でコードを見てください

function anExample() {
    _gaq.push(XXX); 
    return false;  <-- I cause the function to exit                       
    recordOutboundLink(XXXX);  <-- I would never be called
    return false;
}

return falseリンクをたどる場合は、クリックイベントからを削除する必要があります。

于 2012-12-17T18:07:21.570 に答える
1

Steroids の Google Analytics は、これをかなりエレガントに解決します。

<script type="text/javascript">
var _gas = _gas || [];
_gas.push(['_setAccount', 'UA-YYYYYY-Y']); // REPLACE WITH YOUR GA NUMBER
_gas.push(['_setDomainName', '.mydomain.com']); // REPLACE WITH YOUR DOMAIN
_gas.push(['_trackPageview']);
_gas.push(['_gasTrackOutboundLinks']);

(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = '//cdnjs.cloudflare.com/ajax/libs/gas/1.10.1/gas.min.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script> 
于 2012-12-18T22:09:01.963 に答える