近日领导对于统计相关的工作高度关注,责成相关工作人员(我)真抓实干(加班加点),急群众(领导)之所急,想群众(领导)之所想,尽快落实相关工作...具体来说就是给我们的C端也加上统计代码,统计用户打开时的来源url,当前页面类型等;跳转时的当前url,目标url,屏幕中心tag,当前页面类型,页面停留时间等;页面关闭时当前页面类型,屏幕中心tag,当前页面类型等。先交代下背景:B端使用了vue框架,页面打开、关闭、跳转都可以很方便的监听到;C端历史悠久使用的是FreeMarker模板引擎,统计页面关闭时的数据不像B端那样,借助vue可以很方便的监听到。

  初步想到了两种方案:使用H5中新增的API:history.pushState或者使用window.onbeforeunload。

  1.history.pushState

  代码如下:

1 function pushHistory() {
2   var state = {
3     title: "title",
4     url: "#"
5   };
6   window.history.pushState(state, "title", "#");
7 }

  这里的history.pushState会向window.history中push一条记录,该记录就是pushState的第三个参数:url。现在说一下这个pushState,它接收三个参数:状态对象,标题,url。其中第一个参数是对象形式的状态;第二个参数会被忽略,可以写成空的字符;第三个参数是url,这个url会替代当前页面的url,如果写成了空字符,那就是当前的地址。pushState与replaceState的区别在于前者会新增一条数据,而后者只是替换了当前url。这一点可以在浏览器中看到: 这是使用window.history.replaceState时的样子; 这是使用window.history.pushState时的样子,二者的区别就是能否后退,在后退时会触发history.popState事件。  但是想来想去这和关闭页面没什么关系啊,而且是HTML5的新属性,鉴于C 端的用户群体,即使满足要求也要做兼容,遂放弃。  2.onbeforeunload  这个就好用多了,只需要在pnbeforeunload时向服务端发请求就好了。代码片段如下:
1 $(window).on("beforeunload", function () {
2         util_Pc.countClose();
3         unloadFlag = true;
4     });
5     $(window).unload(function() {
6         if(!unloadFlag){
7             util_Pc.countClose();
8         }
9     });

 
 
 

转载于:https://www.cnblogs.com/xinyan-666/p/9572369.html

关闭页面那点事儿...相关推荐

  1. 关闭页面时执行“退出”的解决方案

    在有些应用中我们需要实时的更新站点用户是否在线的状态.比如一些论坛里的在线成员实时显示,或基于网页的聊天.会议系统等.这种情况下,如果用户点击"退出"按钮或链接,我们将之行一系列后 ...

  2. session 安全问题(关闭页面时自动清除session)

    要是直接关闭浏览器,并不直接触发SESION_ONEND事件,因此为了安全的需要,就需要调用页面关闭触发的事件onUnload ,利用这个事件来执行一个函数.在函数中调用session.abandon ...

  3. 安卓.点击头像--编辑个人姓名--提交后.同时调用js关闭页面--返回上一层

    安卓.点击头像-->编辑个人姓名-->提交后.同时调用js关闭页面-->返回上一层 $(document).ready(function() { $('#selfbtn').clic ...

  4. php关闭当前页_php如何直接关闭页面注销SESSION

    php如何直接关闭页面注销SESSION 发布时间:2020-07-09 09:03:06 来源:亿速云 阅读:100 作者:Leah 这篇文章将为大家详细讲解有关php如何直接关闭页面注销SESSI ...

  5. 360浏览器怎么关闭页面声音

    如果在浏览器中打开多个拥有音频效果的页面,不免会导致这些页面上的音频彼此冲突.而要解决这一问题,除了关闭其他的页面外,也可以选择仅关闭页面的声音!那么,该怎么操作呢?下面小编就以360安全浏览器为例, ...

  6. easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口

    弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用, 然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框, $.messager.confirm和panel的onBeforeClos ...

  7. 你知道关闭页面时怎么向后台发送消息吗?

    需求 这两天碰到一个需求:在用户刷新页面或者关闭页面的时候,前端要给后台发一条请求,释放该页面的授权占用. 分析了一下,这不就是在页面卸载时发请求嘛,三下五除二就实现一版: window.addEve ...

  8. 在 关闭页面/卸载(unload)文档 之前向服务器发送请求

    官方介绍:https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/sendBeacon 可参考:https://www.jianshu.c ...

  9. mui关闭页面plus.webview.currentWebview().close();使用后页面闪现一下的问题解决

    mui关闭页面plus.webview.currentWebview().close();使用后页面闪现一下的问题解决 参考文章: (1)mui关闭页面plus.webview.currentWebv ...

最新文章

  1. 洛谷3317 SDOI2014重建(高斯消元+期望)
  2. SpringMVC响应Restful风格请求404
  3. 【机器学习基础】范数与正则化
  4. mysql 表分区优缺点_Mysql分区表局限性总结
  5. Mac备忘录笔记教学——强大的内置笔记软件
  6. 5G完整标准出台,产业应用爆发在即,抢先规划势在必行
  7. Educational Codeforces Round 25 E. Minimal Labelshdu1258
  8. 速成pytorch学习——3天自动微分机制
  9. SpringBoot-项目2-收货地址(新增,修改,删除,设为默认收货地址)
  10. AdminLTE与php,如何使用Vue整合AdminLTE模板
  11. mysql删除图书信息,图书管理系统(一):出版社列表增加、删除和编辑
  12. 网站添加错误页面提示功能(404、500错误提示)
  13. VSS的口令破解算法的思路
  14. 微软消息队列-MSMQ
  15. 剪刀石头布(自留底)01
  16. lds天线技术流程图_一种镭雕镀金方法与流程
  17. 手写一个C语言编译器
  18. dya6小数据池、集合、编码、深浅copy
  19. G1-007 小鲁摘苹果 (10 分)(2022/3/15天梯赛校内选拔赛)
  20. 创业第三年,自己的108条思考

热门文章

  1. 性能提升2.58倍!阿里最快KV存储引擎揭秘
  2. pythonint切片_python-切片
  3. 《淡夜未央》:互动叙事游戏如何提升玩家参与感和互动性?
  4. 依赖注入 这样的坑游戏编程要谨慎
  5. AIX 系统中 PVID 的含义与作用
  6. Linux下mysql设置密码
  7. python的hashlib库
  8. DAY97 - Rest Framework(二)- 序列化组件之Serializer和ModelSerializer
  9. TMD 这个写笔记的号,盗了有意思吗
  10. 洛谷P4630 [APIO2018] Duathlon 铁人两项 【圆方树】