如何解决 iOS 设备的错误调整大小行为

Posted

技术标签:

【中文标题】如何解决 iOS 设备的错误调整大小行为【英文标题】:How to solve erroneous resize behavior of iOS devices 【发布时间】:2017-10-10 13:02:53 【问题描述】:

在调整浏览器窗口大小时,我会收到 resize 事件,但在检查不同的 DOM 值(如可滚动高度等)时,这些值是错误的,并在新布局之前描述了这些值。

去抖调整大小解决了这个问题,但目前还不清楚去抖的最短时间是多少,因为它取决于页面的复杂性。

我找到了这些相关链接:

https://openradar.appspot.com/radar?id=5040881597939712

https://hackernoon.com/onresize-event-broken-in-mobile-safari-d8469027bf4d

问题是,除了在任意时间去抖动之外,还有什么方法可以解决这个问题?

【问题讨论】:

【参考方案1】:

基于resize issue 的community answer,有一个使用参考DOM 元素的工作解决方案,在触发“调整大小”事件之前通过CSS 自动调整大小。比如:

CSS

html 
    width: 100% !important;
    height: 100% !important;

JS

window.addEventListener("resize", function() 
    rect = document.documentElement.getBoundingClientRect();
    realSize =  width: rect.width, height: rect.height ;
)

希望对你有帮助!

【讨论】:

感谢您的回答。我如何在不覆盖整个高度/宽度的元素上使用它?我可以直接获取元素并调用getBoundingClientRect() 吗? @Phonolog 不客气!是的,你可以这样做:document.getElementById('id').getBoundingClientRect()); 好的。您还可以添加指向您所指的社区答案的链接吗?

以上是关于如何解决 iOS 设备的错误调整大小行为的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 设备上调整图像大小?

iOS 无法在设备旋转时自动调整子视图大小

调整大小时的引导程序错误行为

在 iOS 中调整 UIView 的大小

UIPopoverController 的大小调整行为在 iOS 7.0 和 iOS 7.1 之间有所不同

iOS UIImageView 调整大小问题