Jos*_*ams 10 javascript google-analytics synchronous javascript-events
当用户使用Google Analytics(analytics.js)离开页面时,我正在尝试跟踪事件.虽然不知道用户将如何离开,但可能是因为外部链接或只是关闭标签.所以我的想法是挂钩到beforeunload或unload事件然后:
window.addEventListener("beforeunload", function() {
ga('send', 'event', 'some', 'other', 'data');
});
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,对GA服务器的请求是同步还是我可以用hitCallback属性以某种方式强制该行为?如果那是不可能的,我还能怎样做到这一点?优选地,无需为用户设置超时或固定等待时间!
该请求将不会同步,GA跟踪调用永远不会同步。
确保调用完成的唯一方法是确保页面保持打开状态足够长的时间-对于链接上的事件,通常会发生超时,并可能与hitCallback结合使用,如您提到的那样。
用户关闭选项卡时,保持窗口打开的唯一方法是从beforeunload处理程序中返回一个值,这将提示“确认导航”警报。显然,仅跟踪GA事件将是一个非常糟糕的解决方案。
有一种方法可以确保将请求发送给GA.Simo Ahava撰写了一篇非常好的博客文章,题为
" 利用useBeacon并在之前加载谷歌分析 ".
利用卓越的sendBeacon解决方案.这里的引用解决了这个问题的选定答案:
用户代理通常会忽略在卸载处理程序中进行的异步XMLHttpRequests.要解决此问题,分析和诊断代码通常会在卸载或beforeunload处理程序中生成同步XMLHttpRequest以提交数据.同步XMLHttpRequest强制用户代理延迟卸载文档,并使下一个导航看起来更慢.下一页无法避免这种对页面加载性能不佳的看法.
还有其他技术用于确保提交数据.一种这样的技术是通过创建Image元素并在卸载处理程序中设置其src属性来延迟卸载以提交数据.由于大多数用户代理将延迟卸载以完成挂起的图像加载,因此可以在卸载期间提交数据.另一种技术是在卸载处理程序中创建几秒钟的无操作循环,以延迟卸载并将数据提交到服务器.
这些技术不仅代表了糟糕的编码模式,其中一些技术不可靠,而且导致下一次导航的页面加载性能不佳.
| 归档时间: |
|
| 查看次数: |
4810 次 |
| 最近记录: |