質問: $(this).attr('href'); ga('send', 'social', 'line', 'click', shareurl); }); }); ``` ### 試したこと iframe内の要素を読み込むコードに書き換えましたが、 iframe内が結局別のドメインのため読み込めず、DOMExceptionでした。
回答: lineのボタンをdivタグなどの要素で囲って、それにイベントをセットしてみてはいかがでしょうか? ``` ``` ``` $('#jsLineWrapper').on('click', function(){ //実装酷いですがわかりやすいようにしてます var shareurl = $(this).children('.line').attr('href'); ga('send', 'social', 'line', 'click', shareurl); }) ``` これだとイベントの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でイベントが発生する ``` なのでどちらか試してみて下さい!