人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascriptでgoogleアナリティクスとアフィリのイベントを同時にカウントしたい

googleアナリティクスでクリックしたときにイベントをカウントして
ASP側(infotop)でも同時にカウントさせたいです。

タグは以下の形で配信されています。

<script type="text/javascript" src="http://www.infotop.jp/click.js"></script>
<a href="http://test.co.jp" onClick="return clickCount(XXXX, XXX);">テキスト</a>

googleアナリティクスのイベントを埋め込んで

<script type="text/javascript" src="http://www.infotop.jp/click.js"></script>
<a href="http://test.co.jp" onClick="return _gaq.push(['_trackEvent','asp_click','http://test.co.jp,'test']);clickCount(XXXX, XXX);">テキスト</a>

と2つ実行するようにしているのですが、ASP側がうまくカウントしてくれません。

どのように実装すればよいのか、ご教授お願い致します。

●質問者: airlike
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

_gaq.push() と clickCount() を、セミコロン(;)で区切ってますが、カンマ(,)にしたら上手くいきません?

<a href="..." onclick="return _gaq.push([...]) , clickCount(XXXX, XXX);">
 テキスト
 </a>

clickCount() の前を、セミコロンではなく、カンマです。


airlikeさんのコメント
ご回答ありがとうございました。 カンマで区切ったところ、うまくいきました! ありがとうございました。 いろいろなページを見たところ、Javascriptを複数実行するには 「セミコロン」と書いてあったのですが 例) http://www.openspc2.org/JavaScript/study/script.html セミコロンとカンマではどのように動きが違うのでしょうか。 少し調べてみたのですが、わかりませんでした。 もしお時間があれば、こちらも教えていただけると嬉しいです ポイントの方は全部配分させていただきます。 よろしくお願い致します。

a-kuma3さんのコメント
>> セミコロンとカンマではどのように動きが違うのでしょうか。 << こう書いてみると、分かりやすいと思います。 セミコロンで区切っている場合は、以下のコードと同じです。 >|html| <a href="..." onclick="return countEvent()"> テキスト </a> <script> function countEvent() { return _gaq.push([...]); // return 文なので、ここで処理を抜けちゃう clickCount(XXXX, XXX); } </script> ||< セミコロンは、文を区切ります。 区切られた文は順番に実行されるのですが、return 文は、そのブロックを抜けてしまうので、次の文に制御が渡りません。 カンマで区切っている場合は、以下のコードと同じです。 >|html| <a href="..." onclick="return countEvent()"> テキスト </a> <script> function countEvent() { var ret = _gaq.push([...]); ret = clickCount(XXXX, XXX); // _gaq.push() の戻り値はつぶされてしまう return ret; } </script> ||< カンマは、式を区切ります。 区切られた式は、左から順番に評価(実行)されます。 return 文は、それに続く式を評価して、その値を呼び出し元に返します。 # というような説明で分かりますか?

airlikeさんのコメント
非常にわかりやすいご説明ありがとうございました! とてもよくわかりました。 returnがない場合での複数のJavascripthセミコロンで今まで何度も使って不具合がなかったで ずっとセミコロンを使っていたのですが returnがあると、最初の関数で処理が終わっていたのですね。 一方、カンマの場合は、戻り値を次々と上書きしていき、 最後の関数の戻り値が返却されるというわけですね。 納得しました。 戻り値がないと、最後の関数は動かないので計測されてなかったわけですね。 ご回答ありがとうございました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ