1

onclick関数を使用して送信ボタンにGoogleAnalyticsトラックイベントコードを追加したいのですが、すでにonclick関数があります。

既存のコード

<input name="Submit" type="submit" class="button" style="float:left; clear:both;" onclick="MM_validateForm('name','','R','contact_number','','R','email','','RisEmail','address1','','R','address2','','R');return document.MM_returnValue" value="Submit" />

追加したいコード

onclick="_gaq.push(['_trackEvent', 'Contact Page Enquiry', 'Enquiry', 'Contact Page Enquiry']);"

これはできますか?

4

4 に答える 4

1

jQueryを使用している場合は機能します。1 つの要素に複数の onclick イベントを設定できます。

これをチェック

コード

document.getElementById("a").onclick = function() {
   alert(2); //this over writes the onclick on the element. This is called
};

$("#a").click(function() {
    alert(3); //this is called
});​

HTML:

<a id="a" onclick="alert(1)">click</a>​

thisまたはthisのような他の SO の質問を確認してください

上記のリンクから、次のようなことができます。

<input name="Submit" type="submit" class="button" style="float:left; clear:both;" onclick="MM_validateForm('name','','R','contact_number','','R','email','','RisEmail','address1','','R','address2','','R'); _gaq.push(['_trackEvent', 'Contact Page Enquiry', 'Enquiry', 'Contact Page Enquiry']); return document.MM_returnValue" value="Submit" />

ちなみにこれは未確認です。

于 2012-10-16T08:56:25.267 に答える
1

シングル クリック イベントで両方のスクリプトを起動するコールバック関数が必要です。

http://jsfiddle.net/gF7Td/2/

于 2012-10-16T08:53:16.730 に答える
1

あくまで推測ですが… リターンの直前にコードを貼り付けたらどうでしょうか?

于 2012-10-16T08:53:55.720 に答える
0

次の 2 つの点に注意してください。

  1. おそらく_trackEvent、フォームが検証に合格した場合にのみ呼び出しをトリガーする必要があります。
  2. イベント トラッキングは、分析サーバーからトラッキング ピクセルをリクエストすることによって機能します。トラッキング リクエストが完了する前に、フォームの送信によって新しいページが同じウィンドウに読み込まれると、データ収集の欠落や部分的な収集が発生する可能性があります。

フォームの送信を遅らせることで、2 番目の問題を回避できます。

<input id="Submit" name="Submit" type="submit" ... />
...
$('#Submit').click(function(e) {
  // Prevent the default handling of the form submit button
  e.preventDefault();
  MM_validateForm('name', ...
  // If the form didn't validate, don't do anything else
  if (!document.MM_returnValue) return;
  _gaq.push(['_trackEvent', ...
  // Get the form & submit it after 150ms delay
  var form = $(this).parents('form:first');
  setTimeout(function() {form.submit()},150);
});
于 2012-10-17T04:30:23.607 に答える