我正在尝试在客户端的Google分析中触发事件。当用户点击指向另一个网站的链接时,需要触发该事件。放在onclick中的函数调用无法在桌面上运行,因为在Javascript运行之前页面已被卸载。为了解决这个问题,我基于this article实现了以下代码:
<script>
function submitOrderButtion( eventName ){
var url = 'https://example.com';
var goToOrderForm = function(){
console.log( "goToOrderForm" );
window.location = url;
};
//setTimeout( goToOrderForm, 1000 );
console.log( ga.q );
console.log( ga.loaded );
ga('set', 'transport', 'beacon');
ga('send', 'event', 'order online', 'click', eventName, {
hitCallback: goToOrderForm
});
}
</script>
调用该函数的链接是:
<a href="javascript:" onclick="submitOrderButtion( 'homepage' );" class="btn btn-primary">Order Online!</a>
单击按钮时,ga函数永远不会执行任何操作。
ga.q未定义,ga.loaded为true。我将传输设置为'beacon'进行最后一次尝试,但没有任何区别。除非我取消注释setTimeout(我最终将在它工作时),否则永远不会调用回调,从不记录ga事件,并且检查器中不会显示任何网络请求。
以下是网站Joey's Pizza的链接。有问题的链接是页面中间的大按钮,上面写着“在线订购!”。
谁能告诉我为什么ga功能没有做任何事情?在此先感谢您的帮助!
状态更新: 我还在寻找答案。我得到的答案已被多次尝试(使用各种arg配置,并检查源以确保先前的尝试未被缓存)。我花了将近一天的时间来处理应该是一项简单的任务,而且我没有收到任何错误或任何错误。任何进一步的帮助将非常感谢!谢谢:))
答案 0 :(得分:0)
检查是否有任何浏览器插件被阻止。以隐身模式打开浏览器。
答案 1 :(得分:0)
我遇到了同样的问题,最终发现我在发送事件之前错过了对 ga('create')
的调用
ga("create", "UA-XXXXX-Y", "auto");
ga("send", "event", {
eventCategory: "mycategory",
eventLabel: "mylabel",
transportType: "beacon",
eventCallback: () => {
...
},
});
非常令人沮丧的是,如果没有创建跟踪器,对 GA 发送的调用就什么也不做,没有错误、警告或任何有用的东西!
或者,如果像我一样,由于设置了 ga
,您在全局范围内拥有 gtag
,您可以调用 gtag
全局:
gtag("event", "click", {
event_category: "mycategory",
event_label: "mylabel",
transport_type: "beacon",
event_callback: () => {
...
},
});
答案 2 :(得分:-1)
将您的回调作为第5个参数传递
https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#hitcallback
所以它应该是这样的。
ga('send', 'event', 'order online', 'click', {
hitCallback: goToOrderForm
});