javascript判断网页是关闭还是刷新


Posted in Javascript onSeptember 12, 2015

原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序

 代码如下 

window.onunload = function(){    
    var a_n = window.event.screenX - window.screenLeft;    
    var a_b = a_n > document.documentElement.scrollWidth-20;    
    if(a_b && window.event.clientY< 0 || window.event.altKey){    
         alert('关闭页面行为'); 
    }else{ 
         alert('跳转或者刷新页面行为');   
      } 
}

用浏览器右上角的关闭按钮时好用,但在选项卡上关闭和在任务栏上关闭,这个方法就不作用了

js标签只有onloadonunloadonbeforeunload事件,而没有onclose事件。

不管页面是关闭还是刷新都会执行onunload事件。

如何捕捉到页面关闭呢?
页面加载时只执行onload
页面关闭时只执行onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。

这样我们可以在onbeforeunload中加一个标记,在onunload中判断该标记,即可达到判断页面是否真的关闭了
更完整的兼容ff

 代码如下 

<mce:script type="text/javascript"><!--
    function close(evt) //author: sunlei
    {  
      var isIE=document.all?true:false;
      evt = evt ? evt :(window.event ? window.event : null);
      if(isIE){//IE浏览器
        var n = evt.screenX - window.screenLeft;
        var b = n > document.documentElement.scrollWidth-20;
        if(b && evt.clientY<0 || evt.altKey){
          //alert("是关闭而非刷新");
          window.location.href="../include/logout.php";
        }
        else{
          //alert("是刷新而非关闭");
          return false;
        }
      }
      else{//火狐浏览器
        if(document.documentElement.scrollWidth!=0)
        {
          //alert("是刷新而非关闭");
          //window.location.href="report_list.php?ss=1";
          return false;
          
        }
        else{
          alert("是关闭而非刷新");
          //window.location.href="repost_list.php?ss=0";
          //alert("bbbbbbb");
        }
      }
    }
// --></mce:script>
<BODY onunload="close(event);">

上面的方法没办法判断多选项卡的浏览器,如360,ie8这种,下面再看

 代码如下 

function CloseOpen(event) { 
     if(event.clientX<=0 || event.clientY<0) { 
       //获取当前时间
      var date=new Date();
      //将date设置为过去的时间
      alert("关闭网页");
      date.setTime(date.getTime()-10000);
      //将userId这个cookie删除
      document.cookie="zhuangtao;expire="+date.toUTCString();
      document.cookie="quanxianzifucuan;expire="+date.toUTCString();
      document.cookie="quanxian;expire="+date.toUTCString();
     s0 += "关闭窗口!"; sw = 1;
      onbeforeunload();
      // window.event.returnValue = '关闭浏览器将退出系统.';
     } 
     else 
     { 
        alert("刷新或离开"); 
     } 
 } 
       
        var currentKeyCode = -1;

  function document.onkeydown() { // 本窗口的所有下属页面都必须含有本函数

    top.currentKeyCode = event.keyCode;
  }

  function onbeforeunload(){
  
   var sw = 0, s0 = "";
    if (currentKeyCode == 116) 
    {
      s0 += "刷新窗口!(F5)";
    }
    else 
    {
      if ((event.altKey)&&(currentKeyCode == 115)) 
      {
         s0 += "关闭窗口!(alt+F4)"; sw = 1;
          //获取当前时间
          var date=new Date();
          //将date设置为过去的时间
         alert("关闭窗口");
          date.setTime(date.getTime()-10000);
          //将userId这个cookie删除
          document.cookie="zhuangtao;expire="+date.toUTCString();
          document.cookie="quanxianzifucuan;expire="+date.toUTCString();
          document.cookie="quanxian;expire="+date.toUTCString();
      }
      else 
      {
        if ((event.clientX > 0)&&(event.clientX < document.body.clientWidth)) 
        {
         s0 += "刷新窗口!";
        }
        else 
        {
        //获取当前时间
          var date=new Date();
          //将date设置为过去的时间
          alert("关闭网页");
          date.setTime(date.getTime()-10000);
          //将userId这个cookie删除
          document.cookie="zhuangtao;expire="+date.toUTCString();
          document.cookie="quanxianzifucuan;expire="+date.toUTCString();
          document.cookie="quanxian;expire="+date.toUTCString();
         s0 += "关闭窗口!"; sw = 1;
        }
      }
    }
    if (sw == 1) 
    {
     event.returnValue = "";
    }
    else 
    {
     currentKeyCode = -1;
    }
  
  }

<body onunload="CloseOpen(event)" ></body></html>

上面只有不能使用在任务栏关闭了,基本可以满足我们的要求了。

以上内容就是本文给大家介绍的javascript判断网页是关闭还是刷新,希望大家喜欢。

Javascript 相关文章推荐
javascript自动给文本url地址增加链接的方法分享
Jan 20 Javascript
javascript移动设备Web开发中对touch事件的封装实例
Jun 05 Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 Javascript
解决vue 项目引入字体图标报错、不显示等问题
Sep 01 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
p5.js绘制旋转的正方形
Oct 23 Javascript
js查看一个函数的执行时间实例代码
Sep 12 #Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 #Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
Sep 11 #Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
Sep 11 #Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
Sep 11 #Javascript
js实现的后台左侧管理菜单代码
Sep 11 #Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 #Javascript
You might like
一个php导出oracle库的php代码
2009/04/20 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
求职简历的自我评价怎样写好
2013/10/07 职场文书
继承公证书
2014/04/09 职场文书
办公室主任个人总结
2015/02/28 职场文书
python Polars库的使用简介
2021/04/21 Python