1

我一直在使用这个 google 分析代码来跟踪 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 应该用 "mailto:" 重写为 "first class" 条件,而不是 "http:" 的子条件。

于 2012-06-14T18:38:58.320 回答
0

这部分代码

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

只有当这为真时,mailto 条件才有机会运行,但当它为真时,mailto 条件将始终为假,因为 mailto 语法不以“http”开头

<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 回答