WKWebView 的调整大小处理程序中未更新 window.innerWidth/Height
Posted
技术标签:
【中文标题】WKWebView 的调整大小处理程序中未更新 window.innerWidth/Height【英文标题】:window.innerWidth/Height not updated in resize handler in WKWebView 【发布时间】:2017-04-09 02:12:35 【问题描述】:当窗口使用 resize 事件改变大小时,我会更新一些全屏网页内容。
window.onresize = function()
var width = window.innerWidth;
var height = window.innerHeight;
...
这在 Safari 应用程序中运行良好,但在 WKWebView
中不起作用。当设备在WKWebView
中更改 iPhone 和 iPad 上的屏幕方向时,它给了我错误的窗口尺寸。
特别是对于 iPad,我在导航控制器中显示 Web 视图。当我切换到纵向模式时,我得到 (768x768) 尺寸,而不是 (768x960) 尺寸正确。
这个问题有解决办法吗?
【问题讨论】:
【参考方案1】:似乎window.clientWidth
/ window.clientHeight
在 resize 事件触发之前没有得到更新。
我找到了两个解决方案:
使用document.documentElement.clientWidth
而不是window.innerWidth
收听orientationchange
事件而不是resize
事件(window.clientWidth
似乎此时已更新)
【讨论】:
document.documentElement.clientHeight 在运行 ios 14.4.1 的 iPad 上截至 2021 年 3 月 18 日没有更好以上是关于WKWebView 的调整大小处理程序中未更新 window.innerWidth/Height的主要内容,如果未能解决你的问题,请参考以下文章
Java中未处理的异常错误,即使使用try-catch也是如此
ViewController Containment - 子 ViewController 在横向中未正确调整大小