0

Google アナリティクスで送信ボタンを追跡しようとしています。しかし問題は、送信が速すぎるため、GA がイベントを追跡しないことです。

この仕事を得る正しい方法は?私はJSF2を使用しています。

$("#frmButtons\\:btnExportWord").click(function () {
    _gaq.push(['_trackEvent', 'Decode', 'Decode copying', 'Export to Word']);
});

GA のhitcallback関数を試しましたが、成功しませんでした。この機能はあまり文書化されていないと思います。

編集:

ボタンがファイルをユーザーのダウンロードに送信すると、 hitcallback関数は必要なものではないことに気付きました。そのため、ナビゲーションは行わないでください。

4

3 に答える 3

1

フォームの送信リスナーにフックし、デフォルトの送信イベントを防止し、Google アナリティクス コードをトリガーしてから、次のようにフォームを手動で送信できます。

$('#formID').submit(function(e){
    var self = this;

    e.preventDefault(); // Prevent Default Submit Event

    _gaq.push(['_trackEvent', 'Decode', 'Decode copying', 'Export to Word']);

    self.submit(); // Manually Trigger Submit
});

JSFiddle のを次に示します。

これが役立つことを願っています!

アップデート

フォームに複数のボタンがあり、特定のボタンのみを追跡したい場合は、追跡したいボタンにクラスを適用し、送信時に次のようにチェックすることを検討してください。

HTML:

<form id="theForm" action="#" method="post">
    <input type="text" />
    <input type="submit" value="Track Submit" class="track" />
    <input type="submit" value="Submit" />
</form>

JS:

// Identify Clicked Submit Button
$('#theForm input[type=submit]').on('click', function(){
    // Reset Previous Data
    $('#theForm input[type=submit]').data('clicked', 'false');

    // Set Button as Clicked
    $(this).data('clicked', 'true');
});

// Hook into Form Submit
$('#theForm').submit(function(e){
    var self = this;

    // Prevent Default Submit
    e.preventDefault();

    // Track ONLY if Clicked Button has Class of 'track'
    $('input[type=submit]', this).each(function(){
        if ($(this).data('clicked') == 'true' && $(this).hasClass('track') === true){
            alert('TRACK DATA');
        }
    });

    // Manually Submit Form
    self.submit();
});

ここでフィドルを更新しました。

于 2013-07-23T03:07:19.710 に答える