检测浏览器/设备是否支持屏幕旋转

5

有没有一种方法可以检测浏览器/设备是否支持屏幕旋转,而不必等待orientationchange事件?我不是要检测旋转本身,只是想知道浏览器或设备是否支持它。


2个回答

5
我认为您可以这样检测它:
if( 'onorientationchange' in window) { /* supported! */ }

然而,我不确定有些浏览器是否支持该事件,即使它们从未触发它。


为了彻底,检查一下是否也为 window.orientation 保留了一个值可能是值得的,但如果浏览器关于支持/触发 onorientationchange 的说法是虚假的,那么它很可能会提供一个完全的“谎言”,我猜。 - David Thomas
谢谢你们两个的回答。我想这是最好的解决方案,但它不会被一些设备触发(根据这个页面:http://davidwalsh.name/orientation-change)... - jvilhena

0

在编程中,你应该假设所有的设备都可以改变它们的方向,因为你可以使用操作系统将任何屏幕旋转到另一个方向。这是除非你锁定方向,在大多数情况下不建议这样做。

从技术上讲,window.orientationwindow.orientationchange已经被弃用。我们应该使用screen.orientation对象和change事件监听器。

然而,Safari 目前还不支持屏幕方向。所以现在你应该同时使用两者:

if (screen.orientation) {
  screen.orientation.addEventListener('change', handleOrientationChange);
} else {
  window.addEventListener('orientationchange', handleOrientationChange);
}

当设备不旋转时,此监听器将不会触发。但它可能会为任何设备触发。

更多信息请参见 MDN 文档中的 "管理屏幕方向"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接