我尝试追踪用户在我的网站上的活动,例如点击或鼠标悬停以及其他类型的事件...是否有解决方案可以追踪用户离线工作时的事件...我能否将它们存储在类似 cookie 的东西中,并在找到活动的互联网连接时将它们发送到服务器?这是可能的吗?
谢谢。
谢谢。
取决于您要针对哪些浏览器类型。这些是用于HTML5离线Web应用程序吗?
如果它们支持ononline
和onoffline
事件,您可以相当轻松地自己实现这个功能。
以下是一些可行的代码,使用离线事件、本机JSON和HTML5本地存储:
if(!localStorage.getItem("offlineGA")){
localStorage.setItem("offlineGA","[]");
}
var _ogaq = {
push : function(arr){
if(navigator.onLine || !("onLine" in navigator)){ // if online or if browser doesn't support onLine/offLine detection.
_gaq.push(arr);
}
else{
var stored = JSON.parse(localStorage.getItem("offlineGA"));
stored.push(arr);
localStorage.setItem("offlineGA", JSON.stringify(stored));
}
}
};
$(window).bind("online", function(){ // if you don't have jQuery, you can do window.ononline instead
_gaq.push( JSON.parse(localStorage.getItem("offlineGA")) );
localStorage.setItem("offlineGA","[]"); //empty it
});
那么您只需将_ogaq
用作_gaq
的包装器。
例如:
_ogaq.push(["_trackEvent","Category", "Action"]);
npm install --save-dev sw-offline-google-analytics
...
importScripts('path/to/offline-google-analytics-import.js');
goog.offlineGoogleAnalytics.initialize();
对我来说没有用,所以我发现,GA数组推送没有正确工作。 于是我循环了数组,将每个条目推送到Google Analytics。现在它像魔法一样正常运行...
$(window).bind("online", function(){ // if you don't have jQuery, you can do window.ononline instead
var json = JSON.parse(localStorage.getItem("offlineGA"));
for(var i = 0; i < json.length; i++) {
_ogaq.push([json[i][0],json[i][1], json[i][2]]);
}
localStorage.setItem("offlineGA","[]"); //empty it
var json = "";
});