1

我想使用 onclick 函数将 Google Analytics 跟踪事件代码添加到提交按钮,但是那里已经有一个 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,它可以工作。您可以在单个元素上有多个 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>​

检查像这样这样的其他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

需要注意的两件事:

  1. 您可能只希望_trackEvent在表单通过验证时触发调用。
  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 回答