当前位置:  开发笔记 > 前端 > 正文

拖动调整大小句柄时,javascript调整大小事件多次触发

如何解决《拖动调整大小句柄时,javascript调整大小事件多次触发》经验,为你挑选了3个好方法。

我希望这个jQuery插件可以工作,但它没有:

http://andowebsit.es/blog/noteslog.com/post/how-to-fix-the-resize-event-in-ie (旧链接为noteslog.com/post/how-to-fix-the-resize -event-in-ie).

我在他的网站上添加了评论,但他们已经过审核,所以你可能还没有看到它.

但无论如何,让我解释一下我的愿望.我想要在用户暂停调整大小和/或完成调整大小时触发"调整大小"类型的事件,而不是用户主动拖动浏览器的窗口调整大小句柄时触发.我有一个相当复杂和耗时的OnResizeHandled函数我需要运行,但不能运行100次只是因为用户将窗口加宽了100px并且事件被激活了所有的移动像素.我想最好的选择是在用户完成调整大小后处理它.



1> Pim Jager..:

这样的代码怎么样:

function resizeStuff() {
 //Time consuming resize stuff here
}
var TO = false;
$(window).resize(function(){
 if(TO !== false)
    clearTimeout(TO);
 TO = setTimeout(resizeStuff, 200); //200 is time in miliseconds
});

这应该确保该功能仅在用户停止调整大小时调整大小.



2> Welbog..:

借用并发解决方案中的一些想法来管理来自浏览器的大量事件.

例如,当您第一次收到resize事件时,将标志设置为true表示用户当前正在调整大小.设置超时以在1秒后调用实际的resize事件处理程序.然后,只要此标志为true,请忽略resize事件.然后,在实际的处理程序中,一旦完成所有操作并将其更正,请将标志设置为false.

这样,您每秒只能处理一次最新事件(或根据您的要求在其他一段时间内处理).如果用户在调整大小的过程中暂停,则会处理.如果用户完成,它将处理.

这可能不适合您,但还有许多其他方法可以使用更有帮助的锁.



3> James..:

Paul Irish有一个很棒的Debounced jQuery插件可以解决这个问题.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有