手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >在IE浏览器中resize事件执行多次的解决方法
在IE浏览器中resize事件执行多次的解决方法
摘要:这是个让人每次改变页面窗口的大小时很郁闷的方法,尤其在IE浏览器中,稍微动下窗口边框,就会触发很多次事件。更让人蛋疼的是在resize事件中...

这是个让人每次改变页面窗口的大小时很郁闷的方法,尤其在IE浏览器中,稍微动下窗口边框,就会触发很多次事件。更让人蛋疼的是在resize事件中包含某些页面内容处理或计算导致resize事件再次被触发的时候,IE会随机陷入假死状态。

网上找了好久,都是千律一篇的,到处都是转载的一个方法;以下是网上找到的一个解决方法:

复制代码 代码如下:

var resizeTimer = null;

$(window).resize(function() {

if (resizeTimer) clearTimeout(resizeTimer);

resizeTimer = setTimeout("changeHeight()", 500);

});//resize事件延迟500毫秒执行

这个方法虽然可以解决多次执行事件问题,但是不完美,最后我找到了一个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导入网页,把以下代码拷贝到记事本中,另存为网页,然后测试一下。示例:

复制代码 代码如下:

<!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">

<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">

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>

【在IE浏览器中resize事件执行多次的解决方法】相关文章:

JQuery中DOM加载与事件执行实例分析

JQuery自动触发事件的方法

js验证上传图片的方法

js去除浏览器默认底图的方法

jQuery实现表格行上移下移和置顶的方法

js+HTML5基于过滤器从摄像头中捕获视频的方法

JS动态增删表格行的方法

讲解JavaScript中for...in语句的使用方法

JavaScript中length属性的使用方法

根据内容自动调整弹出窗口大小的JS解决方案

精品推荐
分类导航