LoginSignup
1
1

More than 5 years have passed since last update.

GoogleTagManagerのgtm.linkClickが複数回発火するのでこうしてみた。

Posted at

どうやらgtm.linkClickはMouseDownとMouseUp両方で反応してるらしい。
で、デフォルトで用意されているものは1回だけ動くようにしてるみたいだけど、
カスタムHTMLタグとかはそんなこと知ったこっちゃないので、
何にもしないと2回動いたりする ( `д´) ケッ!

カスタムHTMLタグ

一番簡単なのはMouseDownだけ反応するようにしてしまう。

‘event’: ‘my.mouseDown’,
‘gtm.element’: e.target,
‘gtm.elementClasses’: e.target.className,
‘gtm.elementId’: e.target.id,
‘gtm.elementTarget’: e.target.target

via SIMO AHAVA'S BLOG

カスタムJavascript

カスタムJavascriptでなんやかんやしてるところがあったりしたら、
おっ、ちょうどいいじゃん。データ揃ってるしこの中でEvent Trackingとかしちゃおうぜ!!ってなるじゃん。
にんげんだもの。

でもね.....

カスタムJavascriptはもっとひどくて、謎に何度も動いたりする場合がある。
カスタムJavascript in カスタムJavascriptとかすると謎挙動のオンパレードになる。
もうグローバルオブジェクトとか作って制御するしかない。( ・ㅂ・)و ̑̑ グッ

でこうしてみた。

window.clickValidate = window.clickValidate || 0;

if (window.clickValidate === 0) {
  if (なんか判定式 part1) {
    // たとえばこんなかんじで
    ga('mutual.send', 'event', 'hogefuga', 'click', target.text);
  }

  // sidemenu event tracking
  if (なんか判定式 part2) {
    // たとえばこんなかんじで
    ga('mutual.send', 'event', 'foobar', 'click', target.text);
  }
  window.clickValidate++;
}

リンクをクリックした時の挙動なので、
クリックしたら別のページに遷移するからまだ動いてないか動いたかの判定のみ。
(だったらtrue OR falseでよかったね...)
Ajaxでページ遷移せずにやるとか#とかがある場合は別の手を考える必要があるかも

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1