Javascript 打开另一页时jQuery脚本未按预期工作

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

我正在我的网站上实施谷歌分析,我目前正在建设。我的页面中有一个链接,可以打开一个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\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);