小铁匠再战江湖 2012-12-21 17:25
浏览 260
已采纳

js如何获取windows关闭按钮的宽度

我的本意是想在js中区分刷新和关闭。但是发现在网上找的很多js获取页面关闭事件,都是

if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey)。

event.clientX>document.body.clientWidth的适用前提是页面的滚动条和windows关闭按钮的宽度一样。但是现在的宽屏很多,页宽度不一,这样很难保证两者的宽度一样。
所以我想把这个方法改成:event.clientX>屏幕宽度-windows关闭按钮的宽度。希望各位指教,在js中如何获取windows关闭按钮的宽度。
[img]http://dl.iteye.com/upload/attachment/0078/2709/ba8a37a9-7708-39ea-9006-e003b2f30c2f.png[/img]

  • 写回答

1条回答 默认 最新

  • blogzhoubo 2012-12-21 22:44
    关注

    window.onbeforeunload = signout;
    function signout(){ if (event.clientY<0){ alert("closed"); } }

    在页面被卸载的之前会触发onbeforeunload事件,比如: 页面刷新 表单提交 窗口关闭 浏览器关闭 为了只捕获窗口关闭以及浏览器关闭,需要使用event.clientY event.clientY表示的是当事件触发的时候鼠标所在的点相对于当前网页左上角的相对坐标。 那么为什么要用event.clientY<0的条件进行判断呢?因为只有鼠标点击在当前网页窗口的上方的某个点上的时候, event.clientY才为负数,而窗口上方的点只有关闭按钮被点击的时候才会触发onbeforeunload事件。

    不过,这种方法也不是万能的,某些情况下也会失效,比如: 当前浏览器中打开着多个tab页窗口,一个tab页对应一个网页,如果直接点击屏幕右上角的关闭整个浏览器的 按钮, 此时如果浏览器弹出提示窗口,比如提示是否要关闭所有的tab页,而这个提示窗口一般都在屏幕的中间区域显 示,这是 点击确定按钮,浏览器会关闭所有的tab页,进而会触发onbeforeunload事件,但此时获取的event.clientY是个正 数, event.clientY>0。要避免这种情况,只能修改浏览器的设置,让它不弹出提示窗口,直接关闭浏览器。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计