在IE瀏覽器中resize事件執(zhí)行多次的解決方法
這是個(gè)讓人每次改變頁(yè)面窗口的大小時(shí)很郁悶的方法,尤其在IE瀏覽器中,稍微動(dòng)下窗口邊框,就會(huì)觸發(fā)很多次事件。更讓人無(wú)語(yǔ)的是在resize事件中包含某些頁(yè)面內(nèi)容處理或計(jì)算導(dǎo)致resize事件再次被觸發(fā)的時(shí)候,IE會(huì)隨機(jī)陷入假死狀態(tài)。
網(wǎng)上找了好久,都是千律一篇的,到處都是轉(zhuǎn)載的一個(gè)方法;以下是網(wǎng)上找到的一個(gè)解決方法:
var resizeTimer = null;
$(window).resize(function() {
if (resizeTimer) clearTimeout(resizeTimer);
resizeTimer = setTimeout("changeHeight()", 500);
});//resize事件延遲500毫秒執(zhí)行
這個(gè)方法雖然可以解決多次執(zhí)行事件問(wèn)題,但是不完美,最后我找到了一個(gè)jquery插件形式的解決方案;
/*
===============================================================================
WResize is the jQuery plugin for fixing the IE window resize bug
...............................................................................
Copyright 2007 / Andrea Ercolino
-------------------------------------------------------------------------------
LICENSE: http://www.opensource.org/licenses/mit-license.php
WEBSITE: http://noteslog.com/
===============================================================================
*/
( function( $ )
{
$.fn.wresize = function( f )
{
version = '1.1';
wresize = {fired: false, width: 0};
function resizeOnce()
{
if ( $.browser.msie )
{
if ( ! wresize.fired )
{
wresize.fired = true;
}
else
{
var version = parseInt( $.browser.version, 10 );
wresize.fired = false;
if ( version < 7 )
{
return false;
}
else if ( version == 7 )
{
//a vertical resize is fired once, an horizontal resize twice
var width = $( window ).width();
if ( width != wresize.width )
{
wresize.width = width;
return false;
}
}
}
}
return true;
}
function handleWResize( e )
{
if ( resizeOnce() )
{
return f.apply(this, [e]);
}
}
this.each( function()
{
if ( this == window )
{
$( this ).resize( handleWResize );
}
else
{
$( this ).resize( f );
}
} );
return this;
};
} ) ( jQuery );
你可以把上面的代碼另存為jquery.wresize.js導(dǎo)入網(wǎng)頁(yè),把以下代碼拷貝到記事本中,另存為網(wǎng)頁(yè),然后測(cè)試一下。示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="overflow:hidden;">
<head>
<title> test window resize </title>
<script type="text/javascript" src="http://jquery.com/src/jquery-latest.pack.js"></script>
<script type="text/javascript" src="jquery.wresize.js"></script>
<script type="text/javascript">
jQuery( function( $ )
{
function content_resize()
{
var w = $( window );
var H = w.height();
var W = w.width();
$( '#content' ).css( {width: W-20, height: H-20} );
}
$( window ).wresize( content_resize );
content_resize();
} );
</script>
</head>
<body>
<div id="content" style="border: 1px dashed silver; position:absolute; overflow:auto;">
test test testtest test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test
</div>
</body>
</html>
相關(guān)文章
jquery.validate使用攻略 第五步 正則驗(yàn)證
一些常用的驗(yàn)證腳本2010-07-07jQuery實(shí)現(xiàn)優(yōu)雅的彈窗效果(6)
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)優(yōu)雅彈窗效果 的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Jquery.Form 異步提交表單的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Jquery.Form 異步提交表單的簡(jiǎn)單實(shí)例。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03jQuery插件formValidator自定義函數(shù)擴(kuò)展功能實(shí)例詳解
這篇文章主要介紹了jQuery插件formValidator自定義函數(shù)擴(kuò)展功能,結(jié)合實(shí)例形式分析了jQuery插件formValidator常見(jiàn)的各種判定與驗(yàn)證技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-11-11jQuery remove()過(guò)濾被刪除的元素(推薦)
jQuery remove() 方法也可接受一個(gè)參數(shù),允許您對(duì)被刪元素進(jìn)行過(guò)濾。下面通過(guò)實(shí)例代碼給大家介紹jQuery remove()過(guò)濾被刪除的元素,需要的的朋友參考下吧2017-07-07jquery 正整數(shù)數(shù)字校驗(yàn)正則表達(dá)式
本文主要介紹了jquery正整數(shù)數(shù)字校驗(yàn)正則表達(dá)式的方法。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01