【问题标题】:How to detect user window resize vs window.resizeTo如何检测用户窗口调整大小与 window.resizeTo
【发布时间】:2013-05-10 18:54:30
【问题描述】:

我有一个包含许多字段的窗口,其中一些字段显示/隐藏视图中的其他字段或元素。发生这种情况时,我会调用一个函数来调整窗口大小。

该函数基本上获取主体的宽度和高度,并使用 window.resizeTo 函数相应地调整窗口大小。

现在我被要求添加一个新功能: 如果用户手动调整窗口大小,则停止进一步自动调整大小。

我想我可以监听 resize 事件,并可能检测到它何时被 window.resizeTo 函数触发以及何时被用户触发。

问题是,我还没找到办法……有可能吗?

【问题讨论】:

  • 您是否有一些首要原因要跳过这么多圈来展示您的数据?我无法想象我必须根据内容手动调整窗口大小的情况。听起来像是潜在的用户体验风险。

标签: javascript jquery


【解决方案1】:

.resize()。但是,如果用户调整了窗口大小,我看不到从浏览器获取本机信息的变化。但我可以想到一个解决方案,当你的函数调整窗口大小时设置一个标志*,然后在 .resize() 内什么也不做。但是如果 .resize() 被触发但你的标志没有设置,它是由用户触发的。

* = 在您的调整大小代码运行后也删除该标志。

【讨论】:

  • 这可行,但您必须小心使用调整大小事件侦听器,因为 JS 每次调整大小都会多次触发该事件。你必须使用一个去抖动的 resize 事件监听器,我用一个 jQuery 插件来解决这个问题。谢谢!
【解决方案2】:

您是对的,使用“resize”事件可以检测用户何时调整浏览器的大小。 示例:

document.addEventListener("resize", function(){
  alert("resizing!");
}, false);

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 2013-02-10
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2020-01-29
    • 1970-01-01
    相关资源
    最近更新 更多