我有一个表单提交到我不拥有的另一个域,需要在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>
答案 0 :(得分:4)
onsubmit='trackSubmit()'
和bForm.addEventListener('submit', function(e){
这似乎是错误的部分。如果你在trackSubmit()
上调用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>
答案 1 :(得分: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>
答案 2 :(得分:0)
对于偶然发现此问题且正在使用新版Google google Analytics的用户。 这是提交按钮和链接点击的代码
<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>
我已发出警告以显示事件被触发,因为当页面提交并且您将在调试器中查看控制台时,您的事件将不可见。