html 页面缩放事件,浏览器缩放不触发window.onresize事件的BUG

在帮同事处理一个页面缩放BUG的时候惊奇的发现各种浏览器的缩放不触发window.onresize的BUG,太坏了!

我理解的能正常工作的浏览器有:

IE6

FF3

以下浏览器Ctrl+和Ctrl-时均不触发window.onresize事件,只在窗口大小改变时才触发:

IE8 Beta2,无论是Ctrl+,Ctrl-还是最大化最小化,拖拽改变窗口大小,都无法触发window.onresize事件,真是彻底失效了!

Opera 9.52

Chrome 0.2.149.30

Netscape 9.0.0.6

Mozilla 1.7.13

Safari 3.1.2(525.21)

FF2.x

修正的BUG:

page中有width:auto的区块,当缩放字体大小时,该区块大小不能自动更新!

wind

html,body {margin:0;padding:0;}

#x {background:red;}

#y {width:76em;}

var eve = {

bindEvent:function(d,e,f,c){

if(d&&f){

if(document.attachEvent){

if(!!d.length){

for(var i=0,l=d.length;i

}else{

d.attachEvent('on'+e,f);

}

}else{

if(d.length){

for(var i=0,l=d.length;i

}else{

d.addEventListener(e,f,c);

}

}

}

},

removeEvent:function(d,e,f,c){

if(d&&f){

if(document.attachEvent){

if(!!d.length){

for(var i=0,l=d.length;i

}else{

d.detachEvent('on'+e,f);

}

}else{

if(!!d.length){

for(var i=0,l=d.length;i

}else{

d.removeEventListener(e,f,c);

}

}

}

}

}

var rs = function(objID){

var ow = document.documentElement.scrollWidth;

var objID = objID;

var times = 0;

var set = function(){

times += 1;

var xx = document.getElementById(objID);

var w = document.documentElement.scrollWidth;

xx.style.width = (w>ow)?w+'px':(!/MSIE/s6/.0/.test(navigator.userAgent))?w+'px':(w==ow)?'auto':w+'px';

if(times>2){

times = 0;

eve.removeEvent(window,'resize',rs,false);

window.setTimeout(function(){eve.bindEvent(window,'resize',rs,false)},0);

}

}

return function(){

var xx = document.getElementById(objID);

xx.style.width = ow+'px';

alert(ow);

window.setTimeout(set,0);

}

}('x');

eve.bindEvent(window,'resize',rs,false);

M A S T H E A D

转载请注明出处:http://www.v-ec.com/dh20156/article.asp?id=186

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值