iOS iPadOS safari 独立Web应用屏幕旋转的时候 window.innerHeight 数值不对。

news/2024/7/20 21:43:15 标签: 前端, ios, safari

safari_Web_windowinnerHeight__0">iOS iPadOS safari 独立Web应用屏幕旋转的时候 window.innerHeight 数值不对

一、问题描述

我有一个日记应用,是可以作为独立 Web 应用运行的那种,但在旋转屏幕的时候获取到的 window.innerHeightwindow.innerWidth 就不对了,不是屏幕的正常尺寸。导致内容显示不正常。iPhone和 iPad 上都是这样的。

本来应该是这样的。
请添加图片描述
在旋转一次再转回来的时候就成了这样

请添加图片描述

我在程序里是这样写的:

window.onresize = () => {
    this.SET_INSETS({
        windowsHeight: window.innerHeight,
        windowsWidth: window.innerWidth,
        heightPanel: window.innerHeight - 45, // 除 navbar 的高度
    })
}

二、问题解决

搜了下 google 找到了解决办法:虽然 window.innerHeightwindow.innerWidth 的数值不对,但 document.documentElementclientHeightclientWidth 是对的。

window.onresize = () => {
    this.SET_INSETS({
        windowsHeight: window.innerHeight,
        windowsWidth: window.innerWidth,
        heightPanel: window.innerHeight - 45, // 除 navbar 的高度
    })
    console.log('window.innerHeight:', window.innerHeight, window.innerWidth)
    console.log('clientWidth:', document.documentElement.clientWidth, document.documentElement.clientHeight)
}

加上这两个输出能看到结果,在屏幕旋转的时候 clientHeightclientWidth 的数值是正确的。

请添加图片描述

三、结果

换获取高度和宽度的途径换成 document.documentElement.clientHeightdocument.documentElement.clientWidth 就好了


http://www.niftyadmin.cn/n/1009925.html

相关文章

设计原则之开放-封闭原则

参考资料 曾探《JavaScript设计模式与开发实践》;《JavaScript设计模式与开发实践》原则篇(3)—— 开放-封闭原则设计原则和编程技巧之开放-封闭原则 定义 开放封闭原则(Open Closed Principle,OCP)的定义是:当需要…

Linux read的核心函数generic_file_buffered_read

内核:5.9.0 流程图 generic_file_buffered_read一种调用路径(cat某个文件触发): #0 ondemand_readahead (mapping0xffff888005c61340, ra0xffff888005927598, filp0xffff888005927500, hit_readahead_markerfalse, index0, req…

04_前端包管理工具模块化

注意事项: ​ 改模块代码不用重启服务器,修改config文件的时候需要重启服务器 ​ nvm的安装路径和node的安装路径不能在同一路径下面 ​ 有乱码问题使用管理员权限进行使用use方法 下载安装node ​ 使用命令进行安装 1.nvm list 查看已下载所有的node版本 2.nvm install…

JMeter录制HTTPS脚本解决办法

目录 前言: 背景 解决方法 前言: 要在 JMeter 中录制 HTTPS 脚本,你需要解决以下两个主要问题:HTTPS 证书和代理设置。 背景 在对某项目进行脚本录制的时候,明明已经把该网页的安全证书都导入了,但还…

react_hooks系列06_useContext

Context状态树的使用,比较复杂,特别是使用Consumer时。 useContext这个hook能让Context使用起来变得非常简单。不需要再使用Consumer。使用useContext就能拿到context状态树里的值。 const value useContext(context对象); useContext函数的解释&…

Node.js模块化加载机制

优先从缓存中加载 模块在第一次加载后会被缓存。这也意味着多次调用 require() 不会导致模块的代码被执行多次 注意:不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率 $就像下方图中测试 内置模块…

java List集合使用笔记

1、List集合的特点 有序集合、有序的序列,用户可以精准的控制元素插入的位置通过索引访问元素可以搜索元素与Set不同,List允许重复的元素存在 2、List集合特有的方法 add(索引,元素) remove(索引):返回的是被删除的索引 get(索引)&#xf…

WPF webview2 demo

link:WPF 应用中的 WebView2 入门 - Microsoft Edge Development | Microsoft Learn code: <Windowxmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://sc…