我使用了其他问题中的几种方法来尝试锁定我的网络应用程序的屏幕方向,但锁定方向总是失败。这是我的代码:
// lock orientation to portrait
window.screen.lockOrientationUniversal = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation;
if (window.screen.lockOrientationUniversal("portrait")) {
console.log("Orientation locked to portrait");
} else {
console.log("Orientation lock failed.");
}
我也只用
screen.
尝试过。而不是 window.screen.
并得到同样的东西。请注意,这是在最新的 Firefox for Android 上进行测试的,并且该网络应用程序不是全屏应用程序。我还收到以下消息:
Use of the orientation sensor is deprecated.
这是有道理的 Mozilla site提到它已被弃用。最新支持的方法是什么?
最佳答案
1.) Screen.lockOrientation 已被弃用(如您提供的 MDN 链接中所示),因此您拥有的代码可能无法在大多数现代浏览器中运行。
2.) ScreenOrientation 只是界面,这就是为什么ScreenOrientation.lock("portrait")
不起作用。基本上,ScreenOrientation 是在后台告诉浏览器应该如何构建屏幕方向对象的东西(类似于 JavaScript 中的原型(prototype)),但它不是对象本身。
在现代浏览器中,您可以像这样访问全局屏幕方向:var myScreenOrientation = window.screen.orientation;
(来源:https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation)
稍后您可以使用以下命令锁定方向:myScreenOrientation.lock("portrait");
并用myScreenOrientation.unlock();
.lock() 方法返回一个 Promise 如果你想用它做任何事情,但它超出了这个问题的范围,所以我只提它存在。
3.) 另一个可能的问题:在当前标准下,许多浏览器将要求页面处于全屏模式以锁定设备的方向。由于您的网络应用程序不是全屏的,因此这也可能会阻止方向被锁定。 (参见网络标准的 5.3:https://www.w3.org/TR/screen-orientation/)
关于javascript - Web 应用屏幕方向锁定 : Orientation lock failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564148/