打开另一个页面时,jQuery脚本无法正常工作

时间:2017-12-15 05:06:19

标签: javascript jquery google-analytics

我正在我的网站上实施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,结果相同。

2 个答案:

答案 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);