質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Q&A

解決済

1回答

4101閲覧

LINEで送るボタンのGA計測をしたい

ponpoko_3

総合スコア12

Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

0グッド

0クリップ

投稿2017/02/09 02:34

初歩的な事ですみません。
ご回答の程、よろしくお願い致します。

###前提・実現したいこと
LINEで送るボタンをクリックした数をGoogle Analyticsで計測をしたいと考えています。

###発生している問題・エラーメッセージ
今の最新の公式LINEコードは実際に埋め込むとiframeで表示されるため
イベント発火せず、クリックしても計測されません。

###該当のソースコード

//ボタン表示位置 <script type="text/javascript">LineIt.loadButton();</script> <div class="line-it-button line" data-lang="ja" data-type="share-a" style="display: none;"></div> <script src="https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js" async="async" defer="defer"></script> //Google Analyticsトラッキングコード $(function() { $('.line').click(function(){ var shareurl = $(this).attr('href'); ga('send', 'social', 'line', 'click', shareurl); }); });

###試したこと
iframe内の要素を読み込むコードに書き換えましたが、
iframe内が結局別のドメインのため読み込めず、DOMExceptionでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

lineのボタンをdivタグなどの要素で囲って、それにイベントをセットしてみてはいかがでしょうか?

html

1<div id="jsLineWrapper"> 2 <div class="line-it-button line" data-lang="ja" data-type="share-a" style="display: none;"></div> 3</div>

javascript

1$('#jsLineWrapper').on('click', function(){ 2 //実装酷いですがわかりやすいようにしてます 3 var shareurl = $(this).children('.line').attr('href'); 4 ga('send', 'social', 'line', 'click', shareurl); 5})

これだとイベントのbubbling phase(iframeクリックした後に呼ばれる)で設定してるのでiframeの仕様で上の要素へのbubblingがストップしている場合は動かないかもしれないです。

もし試してそのようだったらcapture phase(jsLineWrapperが先に呼ばれるphase)に設定してみるのも検討してみて下さい。

ちなみにbubblingやcapure phaseの話ですが、イベントはhtml内のドキュメントをクリックした際、html rootからDOMを伝ってクリックした場所に到達、その後html rootへ登っていくという流れで行います。

.lineをクリックした際は

html → body → ... → #jsLineWraper → .line → #jsLineWrapper → ... → body → html
| ------ capture phase ------ || ------ bubbling phase ------ |
といった感じです。(ずれてたらすません.lineまでです)

jqueryのclickで登録されるのはbubbling phaseなのでもし、.lineのiframeでbubblingを止める処理が走ってたら#jsLineWrapperにクリックイベントを登録していてもclickイベントは発生しません。

なのでその場合は、.lineに届く前に#jsLineWrapperでイベントを発火させる必要があります。

その場合、jqueryではできず、以下のようにjsを使用して行います。

var elLineWrapper = document.getElementById('jsLineWrapper'); elLineWrapper.addEventListener('click', function(){ // ga送信 }, true) // ← trueにするとcapture phaseでイベントが発生する

なのでどちらか試してみて下さい!

投稿2017/02/09 05:34

MasakazuFukami

総合スコア1869

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ponpoko_3

2017/02/09 06:47

ご回答ありがとうございます。 ご教示いただいた方法うち2つとも試してみましたが 1つ目では.lineのiframeでbubblingを止める処理が走っているのか イベント発火しませんでした。 しかし2つ目では無事発火する事できました。 四苦八苦してなかなかできなかったので助かりました。本当にありがとうございます。 (イベント自体はTagAssistantでエラーのため、また調査が必要そうですが…) ※ちなみにこの情報を探している方に参考ですが… 他にもLINE公式コードの2つ目を使って以下の方法でも書いてみましたが、こちらもイベント発火できませんでした。 <a href="http://line.me/R/msg/text/?LINE%E3%81%A7%E9%80%81%E3%82%8B%0D%0Ahttp%3A%2F%2Fline.me%2F" onclick="ga('send', 'social', 'line', 'click', shareurl);" ><img src="/img/line_btn.png" width="82px" height="20px" alt="LINEで送る" /></a>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問