我正在我的网站上实施Google Analytics,我正在制作这个网站。我的页面中有一个链接,用于打开PDF文件,我正在尝试跟踪文件打开的数量。
在Chrome中使用javascript控制台并且因为警告框打开,我可以确定以下代码有效。
<a id="ga-link" href="path.to.my.file.com">Open PDF file</a>
<script>
(function( $ ) {
$("#ga-link").on("click", function( event ){
event.preventDefault();
gtag('event', 'view', {
'filetype':'pdf',
'filename':'file1',
'event_callback': function() {alert("1");}
});
});
})(jQuery);
</script>
但如果我更换
'event_callback': function() {alert("1");}
与
'event_callback': function() {$(#ga-link).click();}
这是我真正想要做的,脚本不运行。相反,该文件是直接打开的(没有跟踪信息发送到Google Analytics)。
我也尝试使用Google Analytics documentation中的javascript代码:
var btn = document.getElementById('ga-link');
btn.addEventListener('click', function(event) {
event.preventDefault();
gtag('event', 'view', {
'filetype':'pdf',
'filename':'file1',
'event_callback': function() {btn.click();}
});
});
无论我的'event_callback'
功能是什么,这种直接起作用都不起作用。
在这两种情况下,我都尝试在相同的标签页和新标签页中打开PDF,结果相同。
答案 0 :(得分:1)
在Google示例中,他们使用form
作为示例。因此,如果您在表单提交按钮上preventDefault()
- 它会阻止提交,但稍后您可以直接提交表单 - form.submit()
。在您的情况下,按钮始终会阻止默认 - 即使在回调函数中也是如此。
有一些方法可以取消&#34;的preventDefault。一个可能是:
var btn = document.getElementById('ga-link');
var sendData = function() {
this.preventDefault();
gtag('event', 'view', {
'filetype':'pdf',
'filename':'file1',
'event_callback': function() {
$('#ga-link').unbind('click').click();
// your code to open url etc.
btn.addEventListener('click', sendData);
}
});
});
btn.addEventListener('click', sendData);
答案 1 :(得分:0)
问题是TejSoft在他的comment中指出了对点击事件的循环调用。
这就是我所做的。
(function( $ ) {
$("#ga-link").on("click", function( event ){
event.preventDefault();
gtag('event', 'view', {
'filetype':'pdf',
'filename':'file1',
'event_callback': function() {
$('#ga-link').unbind('click'); /*to prevent repeat data from being sent to GA*/
window.open($('#ga-link').attr('href'));/*opens file*/
}
});
}
})(jQuery);