1

私はこのグーグルアナリティクスコードを使ってmailtoリンクを追跡してきましたが、それは単に機能していません。単純なもの(ブラケットがどこかに欠けている)のように感じますが、いくつか試してみましたが、理解できません。助言がありますか?

<script type="text/javascript">

$(document).ready(function(){

    $('a').mouseup(function(){
        href = $(this).attr('href');
        if (href !== null) {            
            href_lower = href.toLowerCase();
            if(href_lower.substr(-3) == "pdf" || href_lower.substr(-3) == "xls" || href_lower.substr(-3) == "doc" ||
               href_lower.substr(-3) == "mp3" || href_lower.substr(-3) == "mp4" || href_lower.substr(-3) == "flv" ||
               href_lower.substr(-3) == "txt" || href_lower.substr(-3) == "csv" || href_lower.substr(-3) == "zip") {
                _gaq.push(['_trackEvent', 'Downloads', href_lower.substr(-3), href]);
            }
        }
        else if (href_lower.substr(0, 4) == "http") {
            var domain = document.domain.replace("www.",'');
                if(href_lower.indexOf(domain) == -1){
                    href = href.replace("http://",'');
                    href = href.replace("https://",'');
                    _gaq.push(['_trackEvent', 'Outbound Traffic', href]);
                }  else if (href && href.match(/^mailto\:/i)) {
                    jQuery(this).click(function() {
                    var mailLink = href.replace(/^mailto\:/i, '');
                    _gaq.push(['_trackEvent', 'Email', 'Click', mailLink]);
                    });
                }
            }
        }
    )
});

4

2 に答える 2

2

「http」で始まるリンクの else-ifで「mailto:」を探しています。if-else-if 全体は、「http:」のサブ条件の代わりに「第一級」条件として「mailto:」で書き直す必要があります。

于 2012-06-14T18:38:58.320 に答える
0

コードのこの部分

else if (href_lower.substr(0, 4) == "http")

これが true の場合のみ、mailto 条件が実行される可能性がありますが、それが true の場合、mailto 構文は「http」で始まらないため、mailto 条件は常に false になります。

<a href="mailto:someone@example.com">Send email</a>

おそらく次のようなことができると思います

if(href !== null) { // ....}
else {
    if(href_lower.indexOf('mailto:') !== -1) { // mailto code }
    else { other than mailto code }
}
于 2012-06-14T18:53:21.580 に答える