小铁匠再战江湖 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。要避免这种情况,只能修改浏览器的设置,让它不弹出提示窗口,直接关闭浏览器。

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

报告相同问题?

悬赏问题

  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分 合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备