クリックイベントをつけようと思った時に、どうやってつけようかなぁ。とかいつも迷っていたので汎用的に使えるものを作ってみました。
プラグイン化するほどでもないかなぁってことで、ソースのみ書いちゃってます。
こういうのってプラグイン化しちゃったほうがいいのかな。
ちょっと時間あるとき整理してプラグイン化してgithub公開しようかと思います。
とりあえずgaのクリックイベント周り設定しやすくしてくれるjsです。
手順・仕様は下記のとおりです。
- 取得したいタグにdata-gaをつける。
aタグにつけた場合(単一)
- data-ga="値"が入っている場合は値を取得
- 値がなく、そのなかの画像にalt属性がついていた場合にはaltの値を取得
- 上記どちらにも当てはまらない場合は、タグ内のテキストを取得
aタグ以外についていた場合(複数)
-
タグ内のaタグに反応
-
data-ga="値"が入っている場合は値を取得の形で取得
'data-ga="値"' + (img alr || タグ内text)
-
値がなく、aタグ内の画像にalt属性がついていた場合にはaltの値を取得
-
上記どちらにも当てはまらない場合は、タグ内のテキストを取得
最後にCategory
にページのタイトルを入れ
取得したテキスト値をLabel
に入れsend event
で送信
ga('send', 'event', 'ページのタイトル', 'click', '値');
実際のソース
var gaClickEvent = (function() {
var title = $('title').text();
$('[data-ga] a, a[data-ga]').on('click',
function(e) {
var currentTarget = e.currentTarget;
var $this = $(currentTarget);
var alt = $this.find('> img').prop('alt');
var gaq = $this.data('ga');
if(gaq === undefined) {
var parentGaq = $this.parents('[data-ga]').data('ga');
var mainText = alt ? alt : $this.text();
var text = parentGaq ? parentGaq + ' ' + mainText : mainText;
} else {
var text = gaq ? gaq :
alt ? alt : $this.text();
}
if(typeof ga !== 'undefined') {
ga('send', 'event', title, 'click', text);
}
}
);
})();