Web中连续触发事件影响性能的解决方法

Web中连续触发事件影响性能的解决办法

        当类似用户改变浏览器窗口大小的事件,有可能会连续触发多次。有的页面需要做到联动处理,在多次触发中可能会卡死,尤其是在性能低下的IE上若每次触发都执行一些图形渲染更是个大问题。

 

        以下代码就解决了这个问题。绑定了window的resize事件,但是每次触发后会延迟500毫秒,给每次触发这个事件进行了tag标识,只处理连续触发后的最后一次的触发行为。

 

$(function(){
			var tag = 0;
			var coverChartWidth  = function(t){
				if(t != tag){return;}
				var w = $(document).width() || 0;
				if(w < 1150){
					$('#chartTable').width(1150);
				}
			};
			$(window).bind('resize',function(){
				tag++;
				(function(t){
					setTimeout(function(){
						coverChartWidth(t);
					},500);
				})(tag);
			});
		});
		

 

1 楼 mfkvfn 23 小时前  
直接用clearTimeout不就行了。
    $(function(){   
                $(window).bind('resize',function(){  
                    window.xxxTimer && clearTimeout(window.xxxTimer);  
                    window.xxxTimer= setTimeout(function(){  
                            coverChartWidth(t);  
                        },500);  
                    };  
                });  
      });  
2 楼 mfkvfn 23 小时前  
mfkvfn 写道
直接用clearTimeout不就行了。
    $(function(){   
                $(window).bind('resize',function(){  
                    window.xxxTimer && clearTimeout(window.xxxTimer);  
                    window.xxxTimer= setTimeout(function(){  
                            coverChartWidth(t);  
                        },500);  
                    };  
                });  
      });  



写错了。应该是
$(function(){   
                $(window).bind('resize',function(){  
                    window.xxxTimer && clearTimeout(window.xxxTimer);  
                    window.xxxTimer= setTimeout(function(){  
                            //window的resize监听处理;  
                     },500);   
                });  
});