美文网首页
前端全(无)埋点之页面停留时长统计

前端全(无)埋点之页面停留时长统计

作者: Mr老朝 | 来源:发表于2021-02-25 17:45 被阅读0次

当前页面关闭统计方案

当前页面关闭统计方案解的思路就是阻塞页面关闭,先发数据统计请求,然后再关闭页面

1 解决方案一: 阻塞式的 Ajax 请求

XMLHttpRequest::open方法的第三个参数,如果设置为false就是同步加载

window.addEventListener('unload', function(event) {
    var xhr = new XMLHttpRequest(),
    xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
    xhr.open('post', '/log', false); // 同步请求
    xhr.send(data);
});
复制代码

这样可以阻塞页面关闭,当然可以在readState为2的时候就abort请求,因为我们不关心响应的内容,只要请求发出去就行了。

2 解决方案二: 暴力的死循环

原理跟上面类似,只不过是使用一个空的死循环阻塞页面关闭

window.addEventListener('unload', function(event) {
  send(data);
  var now = +new Date;
  while(new Date - now >= 10) {} // 阻塞 10ms
});
复制代码

3 发一个图片请求阻塞

大部分浏览器都会等待图片的加载,趁这个机会把统计数据发送出去

window.addEventListener('unload', function(event) {
  send(data);
  (new Image).src = 'http://example.com/s.gif';
});
复制代码

小结

以上提到的几个方案都是一个原理,让浏览器继续保持阻塞状态,等数据发送出去后再跳转,这里存在的问题是:

  • 少量浏览器下可能不奏效
  • 等待一会儿再跳转,用户体验上打了折扣,尤其是移动端上

作者:zuopf769
链接:https://juejin.cn/post/6844903513613418503
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考:前端全(无)埋点之页面停留时长统计

相关文章

网友评论

      本文标题:前端全(无)埋点之页面停留时长统计

      本文链接:https://www.haomeiwen.com/subject/obpufltx.html