0%

手动触发 window 的 resize 事件

使用 jquery

1
$(window).trigger('resize');

使用 dispatchEvent

1
2
3
4
5
6
7
if (Event.prototype.initEvent) {
const evt = window.document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(evt);
else {
window.dispatchEvent(new Event('resize'));
}

说明

由于 window 的 resize 事件属于高频操作,需要进行 debounce 等方式来限制执行频率。

1
2
3
4
import _ from 'lodash';

// Avoid costly calculations while the window size is in flux.
jQuery(window).on('resize', _.debounce(calculateLayout, 150));

另外,还有一个类似 debounce 的函数 throttle,两者的区别可以参考这篇文章