zoukankan      html  css  js  c++  java
  • 判断页面关闭的方法 UNLOAD/onbeforeunload

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

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

    <BODY onbeforeunload="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这个条件可以不要

    坐标说明图:

  • 相关阅读:
    交互设计必懂--开发有价值的用户体验
    优秀APP启动页的设计思维
    增加用户体验的细节--三个按钮的交互设计思维
    零基础掌握交互设计的重点笔记
    在失败的滴滴出行LOGO上谈APP设计
    是成为设计的主人?还是沦为设计的工具?
    大图标+不规则几何创造不同风格
    如何定义视觉设计规范?
    10条SKETCH的秘诀,为你提高工作的效率
    MVC过滤器详解
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2237463.html
Copyright © 2011-2022 走看看