javascript - 在表单提交时触发谷歌分析事件

标签 javascript jquery onclick google-analytics analytics

我正在尝试将分析事件跟踪添加到 onclick 事件,以便在表单上提交输入。

为了达到这一点,我尝试了多个不同的示例并引用了几个不同的 SO 帖子。我能够让 onclick 提交表单或触发跟踪事件,但不能同时发生。

第一个例子:(提交表单+日志到控制台但不触发事件)

<!-- Analytics tracking code -->

<form action="test.php" id="form" method="post">

    <input type="text" name="name" id="name">

    <!-- Submits form + logs to console but doesn't fire event -->

    <input type="submit" name="submit" value="Submit" onclick="
        var _this = this; 
        _gaq.push(
            ['_trackEvent', 'Forms', 'Submit', 'Home Contact'], 
            function() {
                console.log('submitting'); 
                $(_this).parents('form').submit();
            }
        );
    ">

</form>

第二个例子:(触发事件 + 记录到控制台但不提交表单)

<!-- Analytics tracking code -->

<form action="test.php" id="form" method="post">

    <input type="text" name="name" id="name">

    <!-- Fires event + logs to console but doesn't submit form -->

    <input type="submit" name="submit" value="Submit" onclick="
        var _this = this;
        _gaq.push(['_set','hitCallback',function(){
            console.log('submitting');
            $(_this).parents('form').submit();
        }]);
        _gaq.push(
            ['_trackEvent','My category','My action']
        );
        return !window._gaq;
    ">

</form>

我还发现,如果我将 return false 添加到第一个示例的 onclick 事件的末尾,它将触发分析事件跟踪但不会提交表单。

最佳答案

(这真的需要一个常见问题...)

Google Analytics 通过从分析服务器请求图像来记录数据,并将跟踪数据作为图像请求的参数。如果在 _trackEvent_pageView 之后立即在当前窗口中呈现新页面,则可以取消图像请求,并且不会记录任何数据。

通常的模式是在加载新页面或提交表单之前添加一个小的延迟。

尝试

<input type="submit" name="submit" value="Submit" onclick="
  var _this = this; 
  _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']);
  setTimeout(function() {$(_this).parents('form').submit()}, 150);
  return false;"
>

我的偏好是绑定(bind)到表单本身的 jQuery 提交事件,例如

$('#form').submit(function(e){
  e.preventDefault();
  _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']);
  var form = this;
  setTimeout(function(){ form.submit()}, 150);
});

关于javascript - 在表单提交时触发谷歌分析事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498046/

相关文章:

javascript - Google 组合图 - 具有多个条形和线条的间隔

javascript - 从 iframe 调用后菜单无法正确显示

javascript - 将对象数据从 AJAX 发送到 PHP

php - 如何防止 Yii CGridView 过滤器发生变化?

android - 条形图使用aChartEngine 设置显示图表值

javascript - Ember 辛烷 : Unit testing async action on controller

javascript - 将变量函数传递给数组 [Javascript]

javascript - 为什么总是以 Angular 弹出显示?

在 IE7+ 中部分重新加载后未附加 Javascript 事件

javascript - 当我们在javascript中切换时如何显示文本?