在IE 6 7浏览器中resize事件执行多次的解决方法

今天在工作中有一个悬浮的意见反馈窗口需要根据页面大小自适应显示,当用户打开收藏夹使得页面变化之后也要跟着变化,于是用到了jquery的resize函数,但是我发现在我电脑里,IE 6下回运行resize中的内容3次,IE 8只运行了1次,也就是说IE 6下的会触发很多次resize事件。而且我还听说resize事件中包含某些页面内容处理或计算导致resize事件再次被触发的时候,IE会随机陷入假死状态。
到jquery的官网上发现了一个叫做wresize的plugin( http://noteslog.com/post/how-to-fix-the-resize-event-in-ie/  ),找到了一个解决方法:
/*  
===================================================================
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文件中引入或者放在你的代码后面都没有关系,这样就可以解决IE 6 7下触发很多次resize事件的问题了。