判断用户的在线状态 onbeforeunload事件

获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?最常见的非法离开就是关闭浏览器了。


代码如下:

<BODY onbeforeunload="body_onUnload()">
<script>
window.onbeforeunload = function() {
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这个条件可以不要.

(0)

相关推荐

  • window.onbeforeunload方法在IE下无法正常工作的解决办法

    事件的起因是由于在工作中有客户反映,常常会有用户在浏览网页的过程中订购了商品,但是由于用户一下子打开的窗口过多,又或者在敲打键盘时,错误地按到了F5键,导致页面刷新或者不正常关闭,而这时在该网页上所做的一切操作的信息都丢失了,如果我们可以提供一个在客户信息未处理完成时的提示那该多好啊,下面的代码可以做到不管用户是点击了关闭,或者是在任务栏关闭.点击后退.刷新.按F5键,都可以检测到用户即将离开的消息. 复制代码 代码如下: <script type="text/javascript&quo

  • 关闭浏览器时提示onbeforeunload事件

    onbeforeunload事件 它是这样用的: 复制代码 代码如下: <script language="javascript">      g_blnCheckUnload = true;      function RunOnBeforeUnload() {              if (g_blnCheckUnload) {        window.event.returnValue = 'You will lose any unsaved content'

  • 使用onbeforeunload属性后的副作用

    在使用博客园的编辑器编辑文章时,有一个挺体贴用户的功能,就是如果用户进入编辑器后,不是执行"POST"操作而要退出当前编辑器页面,我们会得到一个Alert窗口提示(如下图).这个功能其实很简单,就是通过处理window.body或frameset对象或元素的onbeforeunload事件实现的. 这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件.并且它先于unload事件被触发,如果在其的事件处理函数里面向event.r

  • onbeforeunload与onunload事件异同点总结

    1)异同点 相同点:onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定. 不同点: a)onbeforeunload在onunload之前执行 ,它还可以阻止onunload的执行. b)onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;nunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用 . c)onbefor

  • 判断用户的在线状态 onbeforeunload事件

    获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?最常见的非法离开就是关闭浏览器了. 复制代码 代码如下: <BODY onbeforeunload="body_onUnload()"> <script> window.onbeforeunload = function() { if (window.event.clien

  • 判断用户是否在线的代码

    考虑两种情况: (1)用户关闭浏览器或重定向到其他网页 复制代码 代码如下: <script type=text/javascript> function exit_init() { if(xmlhttp.readyState==4){ if(xmlhttp.status==200){ // } else{ alert("there was a problem accessing the server:"+xmlhttp.status); } } } //定义windows

  • javascript 判断用户有没有操作页面

    javascript 判断用户有没有操作页面 用js判断用户有没有操作页面,我们所要做的就是整理我们的思路. 一.思路 用户有没有操作界面,我们可以从页面在规定时间内有没有触发事件去考虑.比如用户有没有点击,有没有按键,有没有滚动鼠标滚轴.用户有没有移动鼠标等等.如果用户没有进行这些操作,那么我们可以大概的认为用户没有操作页面.我们可以给一个定时器.来记录在规定时间内用户有没有触发这些事件.我直接贴代码,代码的具体含义,我就不再讲解,思路大概就是这样. 二.代码演示 <!DOCTYPE html

  • php版微信公众平台接口参数调试实现判断用户行为的方法

    本文实例讲述了php版微信公众平台接口参数调试实现判断用户行为的方法.分享给大家供大家参考,具体如下: 微信开发的时候,发现有个重要的变量$postObj,获得了一个xml结构装入的对象里因为用户发来的事件,之前只知道用户发送一个消息,我进行处理. 今天要弄个用户订阅就给推送一个消息的功能,却发现不知道如何判断用户是订阅的操作,还是取消订阅,还是发消息,代码如下: public function responseMsg() { global $db; //get post data, May b

  • JavaScript判断用户是否对表单进行了修改的方法

    本文实例讲述了JavaScript判断用户是否对表单进行了修改的方法.分享给大家供大家参考.具体分析如下: 这段JS代码可以判断出用户是否对表单内容进行了修改,如果修改了表单,并退出浏览器,则会提醒用户是否要保存表单的内容,是非常有用的代码. function formIsDirty(form) { for (var i = 0; i < form.elements.length; i++) { var element = form.elements[i]; var type = element

  • 浅谈window.onbeforeunload() 事件调用ajax

    经常有这样的需求,就是在离开某个web页面时,用户不一定点注销,这样会导致会话不能及时销毁.为实现用户离开页面时,自动注销功能,需要在web页面的onbeforeunload事件处理函数中发送注销命令.这个地方大多用Ajax实现.有时还涉及到跨域访问的问题.这个地方就存在浏览器的兼容性问题. 浏览器在处理这个需求时的不兼容性有如下两点: 1.处理Ajax时的不兼容性,这里使用jQuery来解决. 2.在发送Ajax请求时的不兼容性 主要代码如下: function logout() { var

  • 百度地图PC端判断用户是否在配送范围内

    最近接了个项目,其中有项目需求是这样的: 在pc端设置商家的配送范围,用户在下单时,根据用户设置的配送地点判断是否在可配送范围内,并给用户相应的提示. 下面说下我的实现思路: 1.用百度地图在PC端设置配送范围,可拖拽选择 2.根据用户设置的配送地址判断是否在配送范围内 一.百度地图PC端获取范围 改动百度地图官网的demo,设置配送范围. 思路:获取多边形的顶点,以json的形式保存到数据库. 百度API关于多边形覆盖物: 构造函数: Polygon(points:Array<Point>[

  • vue路由跳转时判断用户是否登录功能的实现

    通过判断该用户是否登录过,如果没有登录则跳转到login登录路由,如果登录则正常跳转. 一丶首先在用户登录前后分别给出一个状态来标识此用户是否登录(建议用vuex): 简单用vuex表示一下,不会可以自己去官网多看看: import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); var state = { isLogin:0, //初始时候给一个 isLogin=0 表示用户未登录 }; const mutations = { cha

  • JavaScript 判断用户输入的邮箱及手机格式是否正确

    复制代码 代码如下: /* * 功能:判断用户输入的邮箱格式是否正确 * 传参:无 * 返回值:true or false */ function form_check() { var email = document.getElementById("email").value; //获取邮箱地址 //判断邮箱格式是否正确 if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(email)) { alert("邮箱格

  • 判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** * 银行卡格式校验 * * @param cardNo 银行卡号 * * @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0; //奇数求和 int evensum = 0; //偶数求和 int al

随机推荐