有没有一种方法可以检测浏览器/设备是否支持屏幕旋转,而不必等待orientationchange事件?我不是要检测旋转本身,只是想知道浏览器或设备是否支持它。
有没有一种方法可以检测浏览器/设备是否支持屏幕旋转,而不必等待orientationchange事件?我不是要检测旋转本身,只是想知道浏览器或设备是否支持它。
if( 'onorientationchange' in window) { /* supported! */ }
然而,我不确定有些浏览器是否支持该事件,即使它们从未触发它。
window.orientation
保留了一个值可能是值得的,但如果浏览器关于支持/触发 onorientationchange
的说法是虚假的,那么它很可能会提供一个完全的“谎言”,我猜。 - David Thomas在编程中,你应该假设所有的设备都可以改变它们的方向,因为你可以使用操作系统将任何屏幕旋转到另一个方向。这是除非你锁定方向,在大多数情况下不建议这样做。
从技术上讲,window.orientation
和window.orientationchange
已经被弃用。我们应该使用screen.orientation
对象和change
事件监听器。
然而,Safari 目前还不支持屏幕方向。所以现在你应该同时使用两者:
if (screen.orientation) {
screen.orientation.addEventListener('change', handleOrientationChange);
} else {
window.addEventListener('orientationchange', handleOrientationChange);
}
当设备不旋转时,此监听器将不会触发。但它可能会为任何设备触发。
更多信息请参见 MDN 文档中的 "管理屏幕方向"。