检测由于下载栏(chrome、latest edge、firefox)而导致的窗口大小调整与常规窗口调整大小

SPi*_*lai 7 javascript resize window window-resize

我有一个遗留的 web 应用程序,它具有超级复杂的调整大小事件绑定。它支持页面中类似桌面的窗口(我知道...),并且它们都可以在调整大小时进行缩放。

除了在一种情况下,这实际上表现良好:当您单击此应用程序上的 PDF 链接并将其下载到浏览器时,然后在新选项卡而不是系统查看器中打开 PDF(如果这是用户的浏览器设置)。然后当关闭选项卡并返回应用程序的选项卡时,它在调整大小逻辑上花费了过多的时间(从单击拖动窗口角开始的正常调整大小逻辑时间为 ~1-3s,这就像 ~15-20s)

我认为当下载栏弹出页面并打开新选项卡时,可能会同时触发多个调整大小。已经有一个非常大的(1500 毫秒)去抖动器,但也许是关于打开新标签/下载栏调整大小而不是点击拖动调整大小使去抖动器在这种情况下不适用)并在关闭 PDF 和返回应用程序选项卡。

我们不能只是告诉用户在系统查看器中打开他们的 PDF,我需要一些关于如何开始尝试解决此问题的指导。(或在我尝试的道路上提供帮助)。

我正在尝试的路径是:我想检测来自下载栏的调整大小,而不是出于其他原因(也许 y 增量与下载栏高度完全相同??有没有办法做到这一点?)并且只返回false,如果没有调整50-100px,我们并不在意,当他们关闭它时,无论如何它都会正常调整大小。

小智 0

我首先在程序中添加一个“忙”标志,在开始时设置为 True,在退出时设置为 False。这样,至少您可以捕获重复发生的事件(如果返回 true)。

在一些快速测试中,当浏览器(测试的 Chrome 和 Firefox,Explorer 始终是异常值)显示栏时,div 中具有自动调整大小的简单画布会缩放。初始比例 - 新比例)* 原始宽度 = 不同像素。