JavaScript onresize 事件触发多次
JavaScript onresize event fires multiple times
当触发 onresize 事件时,我在尝试只运行一次函数时遇到了一些麻烦,我已经查看了这个问题 DOM onresize 事件,但我没有使用 jQuery,并且无法让该函数在没有的情况下工作。有什么建议吗?
在调整大小操作期间,为每一帧调用一次 resize 事件。如果要在调整大小完成后调用它,只需使用回调函数设置计时器即可。
var timeOut = null;
window.onresize = function(){
if (timeOut != null)
clearTimeout(timeOut);
timeOut = setTimeout(function(){
// YOUR RESIZE CODE HERE
}, 500);
};
您可以使用
下划线中的debounce
实现:
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
if (immediate && !timeout) func.apply(context, args);
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
window.onresize = debounce(function() {
// Your code here
}, 500);
或者使用链接问题中的库。没有jQuery,它Cowboy.debounce(...)
。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- JavaScript onresize 事件触发多次
- Window onresize事件仅适用于移动设备
- 如何点燃窗户.onresize事件
- 重置容器大小事件(onresize)上元素的CSS属性
- 有没有一种方法可以通过跨浏览器的方式触发window.onresize事件
- JavaScript的onresize事件没有触发
- 窗口.Onresize事件函数执行[打开]
- 使用窗口事件onResize的FF4问题
- Ie8 onresize事件,触发两次