IE6中window.onresize事件的处理

本文介绍了一个浏览器窗口大小调整功能在IE6中遇到的问题及解决方案。作者最初尝试使用简单的onresize事件监听器来调整指定层的尺寸,但在IE6中该事件被无限触发。通过修改代码逻辑,在调整尺寸后解除事件监听并利用setTimeout重新注册监听器的方法成功解决了此问题。
摘要由CSDN通过智能技术生成

不可否认,IE6是目前最SB的一款浏览器。

 

前段时间做一个功能:某个层的大小要随着浏览器窗口的变化而变化。代码很简单,很快写完了,如下所示

  1. <script type="text/javascript">
  2.     function g_rsm(){
  3.         var hs = YAHOO.util.Dom.getViewportHeight();
  4.         var ws = YAHOO.util.Dom.getViewportWidth();
  5.         YAHOO.util.Dom.setStyle("main_wrapper","width",(ws-112)+"px");
  6.         YAHOO.util.Dom.setStyle("main_wrapper","height",(hs-82)+"px");
  7.     }
  8.     window.onresize = g_rsm;
  9. </script>
  10. </head>
  11. <body οnlοad="g_rsm()">

然后,Chrome、FF2-3、Safari都没有问题,但是在IE下,onresize事件会被无限次执行,直到死掉,够傻帽。

 

于是,只好换一种写法

  1. <script type="text/javascript">
  2.     function g_rsm(){
  3.         window.onresize = null;
  4.         var hs = YAHOO.util.Dom.getViewportHeight();
  5.         var ws = YAHOO.util.Dom.getViewportWidth();
  6.         YAHOO.util.Dom.setStyle("main_wrapper","width",(ws-112)+"px");
  7.         YAHOO.util.Dom.setStyle("main_wrapper","height",(hs-82)+"px");
  8.         setTimeout(g_sss,500);
  9.     }
  10.     function g_sss()
  11.     {
  12.         window.onresize = g_rsm;
  13.     }
  14. </script>
  15. </head>
  16. <body οnlοad="g_rsm()">

这下可以了。

 

总结一下:不多说了,IE,傻就一个字

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值