如何统计一个浏览者在某页面的停留时间,并要把它录入数据库存储以待日后查询?

解决该问题目前本人的思路:在浏览器打开的时候设置一个时间开关并且记录下打开页面的时间,而离开或关闭浏览器的时候计算那时的时间值,并把后者的时间减去前面预先设置的初始值,这样的差就是页面停留时间了。

那么现在需要解决的问题是,我们在页面打开时间如何设置时间值?我们需要用何种方式监测到用户在何时离开页面?这两个问题我们都可以利用JavaScript方式解决。

我们在页面初始化前利用JS设置:
pageOpen = new Date();

我们可以利用onbeforeunload事件监测到用户离开浏览器页面。

那么我们如何将数据在onbeforeunload事件的时候录入到数据库呢?这里需要一点技巧。我们利用一般操作方式无法将数据入库,因为在该事件发生时操作也差不多完成了,既使FireFox或是其它浏览器能行,可是IE浏览器却不成。原因在于操作的同步或是异步的关系。如果操作同步了,但是数据添加又来不及操作,那么数据就无法入库了。因而我们采用了Ajax方式进行操作,以异步添加数据的方式来解决该问题。代码如下:

function createXMLHttpRequest() {
 if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
 } else if (window.ActiveXObject) {
  return new ActiveXObject("Microsoft.XMLHttp");
 }
}
pageOpen = new Date();
function GetResidentTime() {
 pageClose = new Date();
 minutes = (pageClose.getMinutes() - pageOpen.getMinutes());
 seconds = (pageClose.getSeconds() - pageOpen.getSeconds());
 time = (seconds + (minutes * 60)); 
 var xmlHttp = createXMLHttpRequest();
 xmlHttp.open("POST", "page.cfm?ResidentTime="+time, false);
 xmlHttp.send(null); 
}
window.onbeforeunload = GetResidentTime;

注意那个粗体的false哦,那里可以能否成功添加数据的关键,因为我们采用了异入操作。

转载于:https://blog.51cto.com/yuanq20/755071

[转]如何统计一个浏览者在某页面的停留时间相关推荐

  1. 封装一个计时器,记录页面的停留时间

    在页面加载时初始化计时器,页面结束时取值. 效果如图: 下面是uniapp的代码示例: <template><view class="aaaacc">< ...

  2. php js统计链接点击次数,JS实现在线统计一个页面内鼠标点击次数的方法

    本文实例讲述了JS实现在线统计一个页面内鼠标点击次数的方法.分享给大家供大家参考.具体实现方法如下: js记录鼠标的点击次数 function addCookie(name,cookievalue,t ...

  3. HQChart使用教程1- 如何快速创建一个K线图页面

    快速创建一个K线图页面 HQChart介绍 demo页面代码 Option的配置项说明 Type Symbol IsAutoUpdate IsShowRightMenu IsShowCorssCurs ...

  4. 如果创建一个符合SEO的页面?

    如果你的网站,主要的核心目的是为了提高企业商业产品的转化,那么,你一定希望,它的上线,可以获得源源不断的精准流量,我们知道,流量获取的方式有很多,比如: ①PPC竞价排名 ②搜索引擎自然排名 ③社交媒 ...

  5. python整数二进制有多少个1_几种统计一个二进制数内有几个1的方法

    几种统计一个二进制数内有几个1的方法 方法一: int f1(int temp) { int num = 0; while(temp) { int t = temp%2; if(t == 1 || t ...

  6. 编写程序,统计一个长度为2的字符串在另一个字符串中出现的次数

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p137 习题5 4.统计一个长度为2的字符串在另一个字符串中出现的次数.例如,假定输入的字符串为:as ...

  7. 统计一个字符串中单词的个数

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p113 习题4 7.统计一个字符串中单词的个数.字符串中两个空格之间的非空格字符串可看做单词. #in ...

  8. 实现统计一个字符串中的每个单词出现的次数--基于Go语言

    实现统计一个字符串中的每个单词出现的次数–基于Go语言 package mainimport ("fmt""strings" )func main() {//统 ...

  9. 上海网络推广浅析一个优质的404页面能给网站带来什么优化效果?

    一个运行良好的网站,往往离不开一个好的404页面的支持,上海网络推广认为404页面能帮助网站抵挡更多问题,也更利于网站的良好发展,那么对于404页面的作用大家都知道吗?下面上海网络推广就带大家一起来了 ...

最新文章

  1. Java-Web JSTL标签库、自定义标签库和MVC设计模式
  2. idea2020shezhi代码检查级别_优秀的模糊测试代码是如何炼成的?
  3. MSP430F5529 DriverLib 库函数学习笔记(四)UART通信
  4. 怎么理解知行之桥EDI系统的端口?
  5. Google 展示广告
  6. Android 百度语音合成手把手教学
  7. 多款AGV模型3D图纸 零件图,装配图都有 潜伏式,搬运AGV,内部结构详细
  8. C/C++中的 void*
  9. 在win7下面安装ubuntu 16.04.4双系统
  10. HTML中属性问题以及通信问题总结
  11. 理解es6中的暂时性死区
  12. 域控制器组策略:域用户加入域,默认加入本地管理员组
  13. [RHEL 4U4] 最小安装后安装Apache(RPM)
  14. 对数字身份认证安全,是企业的责任还是个人的责任?
  15. 计算机网络的形成和发展
  16. chrome审查元素功能
  17. PostgreSQL的MVCC
  18. 里加一列为1_风味人间2:大厨做的拔丝苹果,拉丝1米长,根根分明
  19. 基于Arduino实现简单人体红外感应灯(人体红外传感器+LED)
  20. 爬虫入门(给我爬!快!)

热门文章

  1. 使用JDOM解析XML
  2. POJ 2728 最优比率生成树
  3. 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )
  4. 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
  5. 【Java 注解】注解简介及作用
  6. 【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )
  7. 【计算机网络】物理层 : 总结 ( 物理层特性 | 码元速率 | 通信方式 | 数据传输方式 | 信号类型 | 编码与调制 | 奈氏准则 | 香农定理 | 传输介质 | 物理层设备 ) ★★★
  8. PHP操作MYSQL--PDO
  9. 02.v-cli快速搭建
  10. 数列分块入门2(区间小于c的个数)