小铁匠再战江湖 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。