0

gaAddons Google Analytics jQuery プラグインを使用して自分のサイトでのダウンロードを追跡しようとしているので、ダウンロードされた .JPG、.PNG、.PDF などを追跡コードを実行して追跡したいと考えています。

を起動できないように見えるため、明らかに何かが正しく機能していません_trackEvent

これは、gaAddons プラグインに常駐する JavaScript です。

///////////////////
// _trackDownloads
jQuery(document).ready(function($) {
    // helper function - allow regex as jQuery selector
    $.expr[':'].regex = function(e, i, m) {
        var mP = m[3].split(','),
            l = /^(data|css):/,
            a = {
                method: mP[0].match(l) ? mP[0].split(':')[0] : 'attr',
                property: mP.shift().replace(l, '')
            },
            r = new RegExp(mP.join('').replace(/^\s+|\s+$/g, ''), 'ig');
        return r.test($(e)[a.method](a.property));
    };

    $('a:regex(href,"\\.(zip|mp\\d+|mpe*g|pdf|docx*|pptx*|xlsx*|jpe*g|png|gif|tiff*)")$').live('click', function(e) {
        _gaq.push(['_trackEvent', 'download', 'click', this.href.replace(/^.*\/\//, '')]);
    });
});

上記のコードがページに含まれており、下の PDF ファイルにリンクしている簡単なアンカーがあります。

<a href="http://www.ayrshireminis.com/downloads/Files/pdfs/turnberry.pdf" target="blank">DOWNLOAD</a>

JavaScript に問題がありますか、または jpg/png/pdf ファイルのダウンロードを確認する簡単な方法はありますか? zip/ppt/tiff ファイルはサイトにないため、おそらく無視できます。

4

1 に答える 1

1

私は何時間もかき集めて、この解決策に出くわしました。これが誰かに役立つことを願っています:

jQuery(document).ready(function($) {
    var filetypes = /\.(zip|exe|pdf|doc*|xls*|ppt*|mp3)$/i;
    var baseHref = '';
    if (jQuery('base').attr('href') != undefined)
        baseHref = jQuery('base').attr('href');
        jQuery('a').each(function() {
            var href = jQuery(this).attr('href');
            if (href && href.match(filetypes)) {
                jQuery(this).click(function() {
                    var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
                    var filePath = href;
                    _gaq.push(['_trackEvent', 'Download', 'Click-' + extension, filePath]);
                    if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
                        setTimeout(function() { location.href = baseHref + href; }, 200);
                        return false;
                    }
                });
            }
        });
});
于 2012-08-01T08:32:32.173 に答える