onresize 事件通过监听对象的高和宽,其中任何一个属性发生变化都会触发 onresize 事件。
楼上提到的解决方法存在问题。
// 只能解决楼上提到触发两次的情况,实际浏览器的 resize 事件可能会触发 n 次,持续时间并不一定是 100 毫秒,例如用户拖动浏览器的边框,以下代码会执行多次 callback 事件;
function windowResizeEvent(callback) {
var firstFire = null;
window.onresize = function () {
if(firstFire === null) {
firstFire = setTimeout(function() {
firstFire = null;
callback();
}, 100);
}
}
}
// 改进代码
function windowResizeEvent(callback) {
window.onresize = function() {
var target = this;
if (target.resizeFlag) {
clearTimeout(target.resizeFlag);
}
target.resizeFlag = setTimeout(function() {
callback();
target.resizeFlag = null;
}, 100);
}
}
除了 window 对象,其他 html 标签好像并不支持 onresize 事件,定义了之后并不会触发。
碧霜寒冰
碧霜寒冰
764***220@qq.com2年前 (2018-12-19)
版权声明:本文为weixin_36122351原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。