2016-04-17 13 views
0

複数のイベントが発生し、ページに表示される広告に基づいてGoogleアナリティクスに送信されるスクリプトを作成しようとしています。これまでのところ、私はこれを考え出しましたが、最初のリーダーボードバナーだけが働いていて、残りのものはそうではありませんでした。私はjQueryの専門家ではないので、私のコードを単純化することができると確信していますが、どちらのイベントも動作していないので、問題はイベントです。私はデバッグのための警告を含めると、これは私のコードで何が間違っているかわからないので、解雇取得します。同じページで複数のGoogleアナリティクスイベントを使用する

<!-- Tracking --> 
<script> 
jQuery(document).ready(function($) { 

//leaderboard 
$(".ad_leaderboard").ready(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_leaderboard_term']; ?>', 'view', '<?php echo $GLOBALS['ad_leaderboard_title']; ?>'); 
}); 

$(".ad_leaderboard").click(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_leaderboard_term']; ?>', 'click', '<?php echo $GLOBALS['ad_leaderboard_title']; ?>'); 
}); 

//medium-rectangle 
$(".ad_medium_rectangle").ready(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_medium_rectangle_term']; ?>', 'view', '<?php echo $GLOBALS['ad_medium_rectangle_title']; ?>'); 
}); 

$(".ad_medium_rectangle").click(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_medium_rectangle_term']; ?>', 'click', '<?php echo $GLOBALS['ad_medium_rectangle_title']; ?>'); 
}); 

//skyscraper 
$(".ad_skyscraper").ready(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_skyscraper_term']; ?>', 'view', '<?php echo $GLOBALS['ad_skyscraper_title']; ?>'); 
}); 

$(".ad_skyscraper").click(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_skyscraper_term']; ?>', 'click', '<?php echo $GLOBALS['ad_skyscraper_title']; ?>'); 
}); 

//halfbanner 
$(".ad_halfbanner").ready(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_halfbanner_term']; ?>', 'view', '<?php echo $GLOBALS['ad_halfbanner_title']; ?>'); 
}); 

$(".ad_halfbanner").click(function() { 
    ga('send', 'event', '<?php echo $GLOBALS['ad_halfbanner_term']; ?>', 'click', '<?php echo $GLOBALS['ad_halfbanner_title']; ?>'); 
}); 
}); 
</script> 

答えて

1

関数を複数のイベントにバインドするには、.on()を使用できますが、動的イベントにはphp変数を使用できません。これは、PHPがサーバー側で、jQueryがクライアント側であるためです。まずPHPデータを収集する必要があります。これは私が下記行っているが、あなたは私がそれを簡素化することができれば、それは素晴らしいことだ気にしない:)

+0

ありがとう!クリックするとうまくいきますが、準備ができている部分は機能していません。また、イベントでは 'ビュー'も 'クリック'できるので、クリックとビューを別々に追跡するためにイベントを吐く必要があります。希望があることを願って – Jason

0

助けることができる

var ad_data_term = { 
    ad_leaderboard:"<?php echo $GLOBALS['ad_leaderboard_term']; ?>", 
    ad_medium_rectangle:"<?php echo $GLOBALS['ad_medium_rectangle_term']; ?>", 
    ad_skyscraper:"<?php echo $GLOBALS['ad_skyscraper_term']; ?>", 
    ad_halfbanner:"<?php echo $GLOBALS['ad_halfbanner_term']; ?>" 
    }; 
var ad_data_title = { 
    ad_leaderboard:"<?php echo $GLOBALS['ad_leaderboard_title']; ?>", 
    ad_medium_rectangle:"<?php echo $GLOBALS['ad_medium_rectangle_title']; ?>", 
    ad_skyscraper:"<?php echo $GLOBALS['ad_skyscraper_title']; ?>", 
    ad_halfbanner:"<?php echo $GLOBALS['ad_halfbanner_title']; ?>" 
    }; 

$(".ad_leaderboard, .ad_medium_rectangle, .ad_skyscraper, .ad_halfbanner").on('ready click', function() { 
    var myClass = $(this).attr("class"); 
    ga('send', 'event', ad_data_term[myClass], 'view', ad_data_title[myClass]); 
}); 

希望:P

if ($('.ad_leaderboard').length && $('.ad_leaderboard').css('display') != 'none') 

{  
    var viewClass = $(".ad_leaderboard").attr("class"); 
    alert(ad_data_title[viewClass]); 
    ga('send', 'event', ad_data_term[viewClass], 'view', ad_data_title[viewClass]); 
} 
関連する問題