判断页面关闭的方法 UNLOAD/onbeforeunload

最近一个朋友做在线统计,问我怎么判断用户登陆和离开。获得用户登陆不用说了,大家都知道,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定的范围触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候既时的判断离开呢?最常见的非法离开就是关闭浏览器了。

===============================================================================

<BODY οnbefοreunlοad="body_onUnload()">
<script>
function body_onUnload()
{
   if (window.event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
   {
      alert("浏览器关闭");
   }
   else
   {
      alert("刷新或者跳转到其他页");
   }
}
</script>
</BODY>

===============================================================================

以上是一个片段,BODY 的 UNLOAD和onbeforeunload事件会在浏览器清除所加载的信息时被触发,也就是说页面在回送、重定向或被关闭的时候就会触发 ,通过这个事件加上JAVASCRIPT处理就可以实现非法关闭浏览器也即时统计在线人数了。

但是有个问题,怎么判断用户是关闭还是刷新、回送、重定向呢?

window.event.clientX和window.event.clientY 将捕捉当前事件发生时鼠标相对与窗口的桌面坐标,通常情况下IE的关闭按钮都会在页面的左上部分,所以点关闭的时候鼠标的坐标的Y坐标一定是小于0的,另外,鼠标坐标的X方向上坐标数值会大于窗体宽度,所以,从这两个条件就可以判断鼠标是不是在点关闭按钮引发的onbeforeload事件。
还有一种关闭方法是ALT+F4  ,通过event.altKey就可以判断,事件发生的时候ALT键是不是被按下了,这样也就判断出了是不是时候ALT+F4来关闭窗口。

看过下面的图后大概就明白了,不过也出现一个问题,当使用一些特殊的左面主题的时候 关闭按钮可触发的坐标数值不一定小于窗体宽度,所以,上面例子中的window.event.clientX>document.body.clientWidth这个条件可以不要

坐标说明图:

转载于:https://www.cnblogs.com/ZetaChow/archive/2005/12/29/2237463.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 第几周 时间戳_php时间戳函数实现计算第几周,以及当天所在周的具体日期范围...

<html><script language"javascript">function showdate(){c new Date(2008,1,29);//输入开学的日期.注意,月份是从0-11;comperc.getTime();//以2008年2月29日作为上半学期结束。然后记录新的开学日期var now new Date();//获取当前时间var d_nownow.ge…

java学习笔记④MySql数据库--03/04 DQL查询

03 使用DQL查询数据&#xff08;一&#xff09; 04 使用DQL查询数据&#xff08;二&#xff09; DQL 数据查询语言 select select * 方式效率低 AS 取别名 (给字段取别名,给表取别名,给计算结果取别名) as取别名时,可省略as distinct 去重 所有字段一起不重复算一条记录 selec…

2005国产空间信息系统软件测评结果揭晓

记者&#xff1a;云洲 来源&#xff1a;www.3sNews.net 责编&#xff1a;小柯 [3sNews讯]2005年12月27&#xff0c;为期两天的“地球观测与导航技术领域科技发展研讨会”于中国科技会堂胜利召开&#xff0c;备受业界关注的2005国产空间信息系统软件测评结果在会上揭晓&am…

mysql变量string_mysql sql语句有变量 time_t变量转换为string

1.char*变量 如果有两个指针变量不可以 需要一个转换为stringstring strCall ;strCall.assign(pCallInfo->m_szCallerNo,strlen(pCallInfo->m_szCallerNo));//char* 转换为stringstring sql "insert into tcallrecord values("strCall","pCallInfo-…

axios+vue实现动态渲染员工数据+数据是对象

<style>table{width: 600px;margin: 0 auto;text-align: center;border-collapse: collapse; /*合并边框哦*/}tr th,tr td{border: 1px solid pink;}</style><script src"../vue.js"></script><script src"../axios.js">&l…

[Translation]《击鼓》

"Live or die,meet or part,weve made oath,you and I;,7UZGive me your hand,Ill hold,and live together,till old.l"From: 《击鼓》I?©MYUP2U社区 -- 整理童年的记忆&#xff0c;释放知识的潜力&#xff0c;共享青春的激情&#xff0c;尽在MYUP2U&#xff0…

[vue] vue自定义事件中父组件怎么接收子组件的多个参数?

[vue] vue自定义事件中父组件怎么接收子组件的多个参数&#xff1f; 子组件传递多个参数&#xff0c;父组件用展开运算符获取个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

FLASH全屏,左右侧,闪烁广告及对错觉的代码补充.

<!--焦点图开始--> <script type"text/javascript"><!--var focus_width250; ------ flash的宽度var focus_height160; ------ flash的高度同样可以加上背景颜色 var focus_bgcolor160; ------ flash的背景颜色…

vscode调试angular2

调试步骤&#xff1a; 1.安装nodejs 2.安装vscode 3.vscode安装debugger for chrome插件 4.选择调试->打开调试配置&#xff0c;选择chrome配置&#xff0c;打开lauch.json,修改如下&#xff1a; {"version": "0.2.0","configurations": [{&q…

python实现组合问题_python3 最基本且简单的实现组合设计模式

&#xfeff;组合模式是把一个类别归为一个整体&#xff0c;并且组织多个整体之间的关系&#xff0c;使用通过树形结构来描述所有整体。一般的编写方式为一个类别对象下添加多个该对象的元素&#xff0c;该对象又为其它对象下的元素。简单来说就是一个学校有一个总部&#xff0…

[vue] 说下$attrs和$listeners的使用场景

[vue] 说下attrs和attrs和attrs和listeners的使用场景 <template><el-button v-on"$listeners" v-bind"$attrs" :loading"loading" click"myClick"><slot></slot></el-button> </template><s…

Windows下安装SQLPlus的帮助

Oracle 10G Server不在本机上&#xff0c;我希望安装SQLPlus的帮助。安装SQLPlus需要使用System User登录&#xff0c;但System已经被Lock掉了。还好有dba的权限。先Unlock System账号&#xff0c;并修改密码&#xff1a;-- UnlockALTER USER SYSTEM ACCOUNT UNLOCK;-- Modify …

python爬虫微博24小时热搜_GitHub - Writeup007/weibo_Hot_Search: 微博爬虫:每天定时爬取微博热搜榜的内容,留下互联网人的记忆。...

Weibo_Hot_Search都说互联网人的记忆只有七秒钟&#xff0c;可我却想记录下这七秒钟的记忆。项目已部署在服务器&#xff0c;会在每天的上午 11 点和晚上11 点定时爬取微博的热搜榜内容&#xff0c;保存为 Markdown 文件格式&#xff0c;然后上传备份到 GitHub 你可以随意下载查…

[vue] 分析下vue项目本地开发完成后部署到服务器后报404是什么原因呢?

[vue] 分析下vue项目本地开发完成后部署到服务器后报404是什么原因呢&#xff1f; 1.检查nginx配置&#xff0c;是否正确设置了资源映射条件&#xff1b; 2.检查vue.config.js中是否配置了publicPath&#xff0c;若有则检查是否和项目资源文件在服务器摆放位置一致。个人简介 …

jQuery异步加载数据并添加事件示例

当时项目是通过树形栏进行权限控制的&#xff0c;管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作&#xff0c;可是用$(".XX").click();方法是不行的。1、之前用的是jq1.4.3 ,jq1.7一下都可以使用live()方法&#xff0c;来实现该功能 $(‘#div).live(‘…

python考试有什么用_Python有什么用?2020年学习Python的10个理由

如果你想学习 Python&#xff0c;但是不知道为什么要学习&#xff0c;那么这里有 10 个理由&#xff0c;强调了在 2020 年学习 Python 的好处。不过&#xff0c;这些问题取决于谁在问&#xff0c;也就是说&#xff0c;对于初学者来说&#xff0c;学习Python是有意义的&#xff…

GOOGLE搜索出来的你的网站说明是乱码的

<globalization requestEncoding"utf-8" responseEncoding"utf-8" /> GOOGLE搜索出来的你的网站说明是乱码的。有没有不改这个设置为gb2312而解决这个问题 转载于:https://www.cnblogs.com/smallmuda/archive/2006/02/22/335282.html