javascript - 如何在浏览器的 web 应用程序中强制横向
问题描述
我有一个在 Android 上的 chrome 网络浏览器中运行的网络应用程序。
我想将方向锁定为横向。
我根据本教程尝试了几个选项:
使用 ScreenOrientation.lock(),这是实验性的。此处的示例代码在我的手机(Pixel3,Android 11)中不起作用 - 当设备旋转时,方向会发生变化。
我还尝试了一个 CSS 技巧,如果它检测到设备处于纵向模式,它将屏幕旋转 90 度。在简化示例中
,
屏幕以横向模式呈现,但实际应用程序的功能被破坏。例如,当在 x 方向上移动手指时,会被解释为在 y 方向上移动。
我的 Pixel3 手机在 Android 的 Chrome 中的其他尝试也失败了(旋转设备时方向会改变)
我可以通过将页面安装为 PWA“添加到主屏幕”并使用清单来锁定方向
cat manifest.json
"display": "standalone",
"orientation": "landscape",
但这需要用户将应用安装为PWA
我想在 webapp 在常规浏览器中运行时锁定它的方向。
这可能吗?
谢谢
解决方案
您可以做的最好的选择是生成一个popup
不允许输入的简单内容,即;覆盖屏幕。然后使用下面的代码【可以更好的微调】来检测用户是处于纵向还是横向模式。
setTimeout(() => {
if(window.innerHeight > window.innerWidth){
document.body.getElementById('custom-popup').classList.add('show');
// Obviously you'd have to make a popup that is visible when the class 'custom-popup` is added.
} else {
document.body.getElementById('custom-popup').classList.remove('show');
// The user switched to landscape presumably
}
}, 3000);
推荐阅读
- jquery - 使用 jQuery 时对 Cypress 问题做出反应
- java - 如何将异常传播到java中的调用线程
- gradle - 在 Gradle Kotlin DSL 中为 S3 Maven 存储库使用 IAM 凭证
- bash - sed/awk/perl:找到一个正则表达式,复制这一行的 5 列并粘贴到下一行的开头
- sql-server - 将 regex_substr 和 listagg 代码转换为 SQL Server
- excel - 每次运行时将工作表名称添加为日期和增量日期
- sed - sed 匹配一行并更改另一行
- jquery - 滚动时不透明度返回负值
- extjs - ExtJS Session Viewing Details
- git - Git sync repository in two different workspaces(folders) on the same computer