js判断浏览器窗口关闭,js中关闭窗口的方法

发布时间:2022-12-01

本文目录一览:

  1. javascript判断网页是关闭还是刷新
  2. js判断浏览器是否关闭
  3. [js怎么判断浏览器 关闭](#js怎么判断浏览器 关闭)
  4. 怎么用JS判断浏览器刷新还是关闭

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

刷新:

  • 对于IE、谷歌、360:
    • 页面加载时只执行 onload
    • 页面刷新时,刷新之前执行 onbeforeunload 事件,在新页面即将替换旧页面时 onunload 事件,最后 onload 事件。
    • 页面关闭时,先 onbeforeunload 事件,再 onunload 事件。
  • 对于火狐:
    • 页面刷新时,只执行 onunload;页面关闭时,只执行 onbeforeunload 事件。 刷新的时候先 onbeforeunload,然后取服务端请求数据,在新页面即将替换旧页面时 onunload 事件,而页面关闭时,先 onbeforeunload 事件,再立即 onunload 事件。那么在刷新的时候,onbeforeunloadonunload 之间的时间肯定比关闭的时候时间长,经过测试确实如此。

关闭

使用 onunloadonbeforeunload 可以监听浏览器关闭事件,但是无法区分关闭与刷新。以下 JS 代码可以部分监听关闭浏览器的事件!

// 鼠标相对于用户屏幕的水平位置 - 窗口左上角相对于屏幕左上角的水平位置 = 鼠标在当前窗口上的水平位置
var n = window.event.screenX - window.screenLeft;
// 鼠标在当前窗口内时,nm,b 为 false;鼠标在当前窗口外时,nm,b 为 true。20 这个值是指关闭按钮的宽度
var b = n document.documentElement.scrollWidth-20;
// 鼠标在客户区内时,window.event.clientY 0;鼠标在客户区外时,window.event.clientY 0
if(b window.event.clientY 0 || window.event.altKey || window.event.ctrlKey){
    // 关闭浏览器时你想做的事
}else if(event.clientY document.body.clientHeight || event.altKey){
    // 关闭浏览器时你想做的事
}

这段 JS 能监听到鼠标点击浏览器关闭按钮、浏览器状态栏鼠标右键弹出菜单中的关闭以及各种快捷键。但是双击浏览器左上角图标关闭浏览器和关闭标签页无法监听。

js判断浏览器是否关闭

<body> 标签只有 onloadonunloadonbeforeunload 事件,而没有 onclose 事件。不管页面是关闭还是刷新都会执行 onunload 事件。如何捕捉到页面关闭呢?

  • 页面加载时只执行 onload
  • 页面关闭时只执行 onunload
  • 页面刷新时先执行 onbeforeunload,然后 onunload,最后 onload。这样我们可以在 onbeforeunload 中加一个标记,在 onunload 中判断该标记,即可达到判断页面是否真的关闭了。

js怎么判断浏览器 关闭

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
    <title>Js智能判断浏览器是关闭还是刷新</title>
    <meta http-equiv="content-type" content="text/html;charset=gb2312" />
</head>
<body>
    关闭或刷新浏览器试试!
    <script language="javascript">
        window.onbeforeunload = function(){
            var n = window.event.screenX - window.screenLeft;
            var b = n document.documentElement.scrollWidth-20;
            if(b window.event.clientY 0 || window.event.altKey){
                alert("关闭");
            }else{
                alert("刷新");
            }
        }
    </script>
</body>
</html>

怎么用JS判断浏览器刷新还是关闭

  • 页面加载时只执行 onload
  • 页面关闭时只执行 onunload
  • 页面刷新时先执行 onbeforeunload,然后 onunload,最后 onload 经过验证我得出的结论是:
  • 对于 IE、谷歌、360:
    • 页面加载时只执行 onload
    • 页面刷新时,刷新之前执行 onbeforeunload 事件,在新页面即将替换旧页面时 onunload 事件,最后 onload 事件。
    • 页面关闭时,先 onbeforeunload 事件,再 onunload 事件。
  • 对于火狐:
    • 页面刷新时,只执行 onunload;页面关闭时,只执行 onbeforeunload 事件 那么回归正题,到底怎样判断浏览器是关闭还是刷新?我按照网上的各种说法实验千百遍,都未成功,其中各种说法如下:
window.onbeforeunload = function() //author: meizz
{
    var n = window.event.screenX - window.screenLeft;
    var b = n document.documentElement.scrollWidth-20;
    if(b window.event.clientY 0 || window.event.altKey)
    {
        alert("是关闭而非刷新");
        window.event.returnValue = ""; //这里可以放置你想做的操作代码
    }
    else
    {
        alert("是刷新而非关闭");
    }
}

function CloseOpen(event) {
    if(event.clientX=0 event.clientY 0) {
        alert("关闭");
    }
    else
    {
        alert("刷新或离开");
    }
}

这些方法都不管用,但是我并没有放弃,想啊想啊........
按照上面我得出结论:

  • 对于 IE、谷歌、360:
    • 页面加载时只执行 onload
    • 页面刷新时,刷新之前执行 onbeforeunload 事件,在新页面即将替换旧页面时 onunload 事件,最后 onload 事件。
    • 页面关闭时,先 onbeforeunload 事件,再 onunload 事件。
  • 对于火狐:
    • 页面刷新时,只执行 onunload;页面关闭时,只执行 onbeforeunload 事件 刷新的时候先 onbeforeunload,然后取服务端请求数据,在新页面即将替换旧页面时 onunload 事件,而页面关闭时,先 onbeforeunload 事件,再立即 onunload 事件。那么在刷新的时候,onbeforeunloadonunload 之间的时间肯定比关闭的时候时间长,经过测试确实如此。 贴出我的测试代码:
var _beforeUnload_time = 0, _gap_time = 0;
var is_fireFox = navigator.userAgent.indexOf("Firefox")-1;//是否是火狐浏览器
window.onunload = function (){
    _gap_time = new Date().getTime() - _beforeUnload_time;
    if(_gap_time <= 5)
        $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"浏览器关闭",time:_gap_time},function(json){},"text");
    else
        $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"浏览器刷新",time:_gap_time},function(json){},"text");
}
window.onbeforeunload = function (){
    _beforeUnload_time = new Date().getTime();
    if(is_fireFox)//火狐关闭执行
        $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"火狐关闭"},function(json){},"text");
};