Javascript ctrl+;使用回调函数时单击“禁用”

Javascript ctrl+;使用回调函数时单击“禁用”,javascript,jquery,google-analytics,Javascript,Jquery,Google Analytics,我在我的电子商务网页上有一个产品的图片,也是一个链接,每当有人点击图片时,我想使用谷歌分析增强型电子商务工具进行跟踪。为了在我的google analytics报告中获得更准确的数据,我停止链接导航到下一页,直到事件发送完数据 这是链接的html: <a href="/product_path" onclick="onProductClick();return !ga.loaded;"> <img src="/some_product.jpg" /> </a

我在我的电子商务网页上有一个产品的图片,也是一个链接,每当有人点击图片时,我想使用谷歌分析增强型电子商务工具进行跟踪。为了在我的google analytics报告中获得更准确的数据,我停止链接导航到下一页,直到事件发送完数据

这是链接的html:

<a href="/product_path" onclick="onProductClick();return !ga.loaded;">
    <img src="/some_product.jpg" />
</a>

这是使用的javascript:

<script>
    function onProductClick() {  

        ...

        ga('send', 'event', 'UX', 'click', 'Featured' {
            'hitCallback': function() {
                document.location = '/product_path'
            }
        });
    }
</script>

函数onProductClick(){
...
ga('send'、'event'、'UX'、'click'、'Featured'{
“hitCallback”:函数(){
document.location='/product_path'
}
});
}
但是,这会导致当我按ctrl键并单击图像时,它不会像往常一样在新选项卡中打开,而是在与我现在相同的选项卡中打开。这是一个功能,我希望它继续工作


有人知道如何恢复该功能吗?

您可以使用类似的方法:

var my_event;
document.querySelector("#my_link").addEventListener("click", function(event){
    my_event= event;
    setTimeout(function(){//simulate your call to ga
        var window_target= my_event.ctrlKey ? "_newtab": "_self";
        window.open(my_event.target.href, window_target );
    },100);
    event.preventDefault();
    return false;
});
但它不可靠,例如,它不能处理鼠标中键单击

我会让正常的行为,ga脚本发出请求,然后像用户希望的那样打开新页面。事实上,我看不出有什么问题

document.querySelector("#my_link").addEventListener("click", function(){
 //ga call here
});

为什么要在这种情况下重定向?没有必要。只需打开选项卡并记录单击。类似于
onclick=“onProductClick();return!ga.loaded&&!KeyboardJS.activeKeys().include('ctrl')”
应该可以完成这项工作:)。我想你的意思是:
onclick=“onProductClick();return!ga.loaded | | KeyboardJS.activeKeys()。include('ctrl')”
,对吗?尝试了这个,但我现在有一个问题,产品页面在两个选项卡中都打开了,应该只在新选项卡中打开。还有,中键点击是否也可以?