2

我有一个表单提交到我不拥有的另一个域并且需要在 Google Analytics 中跟踪事件。我宁愿不使用 jQuery 来避免依赖,但我不明白为什么这段代码不起作用:

<form action='example.com/search' onsubmit='trackSubmit()' id='frm'>
    <button type='submit'>Search</button>
</form>

<script type='text/javascript'>
function trackSubmit(e) { 

  var bForm = document.getElementById('frm');

    bForm.addEventListener('submit', function(e){
    e.preventDefault();
    _gaq.push('_trackEvent', 'Foobar', 'Foobar Form Submit');
    setTimeout(function(){

        console.log('tracking foobar');
        bForm.submit();

    }, 1000);
  }, false);

}
</script>
4

3 回答 3

4

onsubmit='trackSubmit()'bForm.addEventListener('submit', function(e){

这似乎是错误的部分。如果你调用trackSubmit()on submit,那么在这个函数中添加一个监听器是没有用的,它甚至不会触发。我认为应该只是:

<form action="http://example.com/search" onsubmit="return trackSubmit()" id="frm">
    <button type="submit">Search</button>
</form>

<script type="text/javascript">
function trackSubmit() {
    var frm = document.getElementById('frm');

    _gaq.push('_trackEvent', 'Foobar', 'Foobar Form Submit');
    setTimeout(function(){

        console.log('tracking foobar');
        frm.submit();

    }, 1000);

    return false;

}
</script>
于 2013-04-18T20:26:05.013 回答
0

对于偶然发现这个问题并正在使用新版本的谷歌通用分析的用户。这是提交按钮和链接点击的代码

<script type='text/javascript'>
        function trackSubmit() { 


        ga('send', 'event', 'button', 'click', 'searchsubmit', 4);
          alert('testing send event')
        }

        function trackClick() { 
            ga('send', 'event', 'button', 'click', 'This is coool');
        }
    </script>

    <body>
    Pushing data.......

        <form onsubmit='trackSubmit()' id='frm'>
            <button type='submit' id= 'searchsubmit'>Search</button>

            </br>
            <a href='http://cool.com' onclick="trackClick(); return false;">cool</a>
        </form>

    </body>

我已经发出警报以显示事件正在被触发,因为当页面提交并且您将在调试器中查看控制台时,您的事件将不可见。

在此处输入图像描述

于 2014-04-30T18:27:05.463 回答
0

这将可重复用于多次提交跟踪。

<script type="text/javascript">
    function trackSubmissions(form, category, name, value) {
        try {
            _gaq.push(['_trackEvent', category, name, value]);
        } catch(err){}
        setTimeout(function() {
            form.submit();
        }, 100);
    }
</script>

<form onsubmit="trackSubmissions(this, 'category', 'name', 'value'); return false;">
</form>
于 2013-10-24T10:56:45.037 回答