onresize,opener,self

本文介绍了一个有效的方法来解决浏览器窗口调整大小时onresize事件被多次触发的问题。通过使用setTimeout延迟执行和状态变量判断,可以避免因窗口尺寸变化而频繁执行不必要的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

onresize的触发是这样的:按照一个很短的间隔来判断,当你把200*200的窗口拖到200*400的时候中间要经过几次resize,从而触发几个onresize.
要避免多次onresize触发引起某个代码执行多次的不良后果,可以自己写个函数,在onresize之后间隔一个时间值(setTimeout)再调用你要执行的代码,通过置状态变量判断是否要执行,如果两次onresize的时间间隔小于100ms,就再setTimeout,等等看。

如何解决window.onresize的多次调用?

<script type="text/javascript">
var resizeTimer = null;
function doResize(){
alert("width="+document.documentElement.clientWidth + " Height="+document.documentElement.clientHeight);resizeTimer=null
}
window.onresize = function(){
if(resizeTimer==null){
resizeTimer = setTimeout("doResize()",300);
}
}
</script>


opener:对打开当前窗口的window对象的引用,如果当前窗口被用户打开,则它的值为null.

self:自引用属性,是对当前window对象的应用,与window属性同义.

self代表自身窗口,opener代表打开自身的那个窗口,比如窗口A打开窗口B.如果靠window.open方法,则对于窗口B,self代表B自己,而opener代表窗口A.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值