检测窗口的大小更改

时间:2018-05-04 15:18:14

标签: javascript html

我想知道窗口大小何时发生变化。 我找到了这篇文章JavaScript window resize event,它在我调整窗口大小时有效,但如果我点击全屏按钮,或者我使用快捷方式"Window" + "Left" / var addEvent = function(object, type, callback) { if (object == null || typeof(object) == 'undefined') return; if (object.addEventListener) { object.addEventListener(type, callback, false); } else if (object.attachEvent) { object.attachEvent("on" + type, callback); } else { object["on"+type] = callback; } }; let this2 = this; addEvent(window, "resize", function(event) { this2.prepareAnimation(); }); 等,则无效。 事实上,当窗口从一个大小传递到另一个大小而没有转换时,它不会检测窗口是否调整大小

有可能检测到吗?感谢

目前我已经:

Dim fromDate As Date, toDate As Date

fromDate = DateSerial(2018, month, 1)
toDate = DateSerial(2018, month + 1, 1)
Debug.Print fromDate, toDate

3 个答案:

答案 0 :(得分:1)

window.onresize = function () { 
    // Do stuff
}

这应该在每次浏览器窗口调整大小时触发该功能。我已经确认这适用于MacOS和Windows版本的Chrome,包括Windows最大化/最小化," Windows Button" +" Up"等

答案 1 :(得分:0)

在现实生活中,项目始终使用addEventListener而不是onEvenetName

基本示例如下所示:

window.addEventListener("resize", function () {
console.log('Resize')
});

BUT! Resize事件会大量激活,您不希望每次都运行事件侦听器,因为这对浏览器来说是一个很大的性能问题。

您可以阅读有关Debouncing and Throttling here.

的更多信息

如果您使用lodash,您已经拥有以下功能:

window.addEventListener("resize", _.debounce(function () {
console.log('Resize')
}), 200);

在第二个示例中,resize事件仅在调用最后一个resize事件后200ms触发。

答案 2 :(得分:-1)

我知道的唯一方法是window.onresize,关于键盘快捷键,对我来说它工作正常,你指定的所有调整大小的快捷方式,我只是用它来查看它是否正常工作,是的,它是,我不知道,也许是你的浏览器

 window.onresize=function(e){
     console.log(e);
 }