Javascript 打开另一页时jQuery脚本未按预期工作
我正在我的网站上实施谷歌分析,我目前正在建设。我的页面中有一个链接,可以打开一个PDF文件,我正在尝试跟踪打开的文件数量 使用Chrome中的javascript控制台,由于警报框打开,我可以确定以下代码是否有效Javascript 打开另一页时jQuery脚本未按预期工作,javascript,jquery,google-analytics,Javascript,Jquery,Google Analytics,我正在我的网站上实施谷歌分析,我目前正在建设。我的页面中有一个链接,可以打开一个PDF文件,我正在尝试跟踪打开的文件数量 使用Chrome中的javascript控制台,由于警报框打开,我可以确定以下代码是否有效 <a id="ga-link" href="path.to.my.file.com">Open PDF file</a> <script> (function( $ ) { $("#ga-l
<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\u callback'
函数是什么,这种直接的方法根本不起作用
在这两种情况下,我都尝试在同一选项卡和新选项卡中打开PDF,结果相同。在谷歌示例中,他们使用了
表单
作为示例。所以,如果您在表单提交按钮上使用preventDefault()
,它会阻止提交,但稍后您可以直接提交表单-form.submit()
。在您的情况下,即使在回调函数中,按钮也总是阻止默认值
有一些方法可以“取消”默认设置。一种可能是:
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);
问题在于,正如TejSoft在其报告中指出的那样,存在对点击事件的循环调用。
这就是我所做的
(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);
这是因为这些事件正在变得循环。正在调用的btn.click()通过事件侦听器“click.dam”再次返回。回顾过去,这看起来很明显,但你会如何解决这个问题?我对js或jquery不太熟悉,看不到明显的解决方案。我完全相信我的答案涵盖了您的问题。我犯了一些语法错误(忘记了引号),所以请再次检查我的答案并应用代码,因为它现在很奇怪。这也不行。另外,我不希望链接停止运行,因为它可能需要再次打开。是否还有其他解决方法?您可以尝试
$('ga link')。解除绑定('click')。单击()
。我刚刚意识到,$(这个)
指的是gtag属性对象。根据谷歌的说法,如果你的链接打开了一个新页面,你必须这样做。但是你可以解除绑定('click')。需要的时候单击()。。我没有注意到您代码中的$(this)
<代码>$(#ga链接)。解除绑定('click')。单击()代码>是我尝试的,但它不起作用。你添加了引号吗?它不像$(#ga-link)
它应该是$('#ga-link')
(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);