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); }); });