Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

どうやら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でページ遷移せずにやるとか#とかがある場合は別の手を考える必要があるかも

usk81
お仕事内容:プログラマ & たまにインフラ & SEOラングラー & データアナリスト & データサイエンティスト見習い & バリスタじゃないけど、コーヒー淹れる人 & 農家から買い付けて日本茶淹れる人
https://usk81.dev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away