2

Google Universal Analytics を介してブログ投稿のコメントを追跡しようとしています。ラベルにブログ投稿の名前を取得させたいので、jQuery を使用してイベントを発生させます。

これまでのところ、次のコードがあります (これは、他の Web サイトで使用したコードに基づいており、正常に動作します)。

$(document).ready(function(){
   $('#commentform').submit(function(){
     var postname = $('h2.post-title').text();
     ga('send', 'event', 'Engagement', 'Comment', postname, 5);

   });
});

何かご意見は?

(申し訳ありませんが、ブログにリンクしますが、まだ公開されていません)

ありがとう

4

2 に答える 2

2
$(document).ready(function(){
$('#commentform').submit(function(){
var postname = $('h2.post-title').text();
ga('send', 'event', 'Engagement', 'Comment', postname, 5);
});
});

初めに。このコードは、で見つかったh2クラスを持つタグのテキストを割り当てます。投稿のタイトルを取得するより確実な方法は、ID です。post-titledocument

次に、Google Analitycs コードが起動する前にフォームが送信されるため、機能しない可能性があります。したがって、デフォルトの動作を停止し、analytics がデータの送信を完了した後にフォームを送信する必要があります。(参照: https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback )

$( document ).ready( function() {
    $( document ).on( 'submit', 'form#commentform', function( e ) {
        var postname = $( '#post-title' ).text();
        ga( 'send', {
            'hitType': 'event',
            'eventCategory': 'Engagement',
            'eventAction': 'Comment',
            'eventLabel': postname,
            'eventValue': 5,
            'hitCallback': function() {
                //now you can submit the form
                //$('#commentform').off('submit').trigger('submit');
                $('#commentform').off('submit'); //unbind the event
                $('#commentform')[0].submit(); //fire DOM element event, not jQuery event
            }
        });
        return false;
    });
});

編集: コードが機能しhitCallbackない可能性があることに気付きました。改訂版では、DOM 要素のイベントを呼び出し、結果としてフォームを送信する必要があります。

Edit2: document.ready() が起動されたときにフォームが存在しない場合のイベントバインディングを修正しました

于 2013-04-23T12:29:16.260 に答える