在JavaScript中检测设备是否能够更改方向

7

有没有原生JavaScript(或通过使用诸如JQuery / Modernizr等库)的方法来检测设备是否能够更改方向?我想将其用作区分桌面和移动设备的方法。

谢谢,

Shadi


3
大多数操作系统都支持这个功能吧?在Windows(我猜其他桌面操作系统也是这样),您可以根据屏幕的方向更改方向。有些人会将16:9的屏幕放置在竖立的纵向方向等等。因此,不幸的是,我认为这不是区分桌面和移动设备的好方法。 - Christofer Eliasson
@ChristoferEliasson 我同意这不是区分桌面和移动设备的最佳方式,但重要的是检测方向变化的功能...这很有趣。 - Ian
2
实际上,如果可用的话,onorientationchange 似乎可以成为 window 的一个属性。我的浏览器没有它,但它似乎是一个有效的事件 - https://dev59.com/42435IYBdhLWcg3wqB8x - Ian
1个回答

19

检测移动设备:

  1. 简单的浏览器嗅探

    if (/mobile/i.test(navigator.userAgent)) {...}
    
  2. jQuery.browser.mobile插件(全面的浏览器嗅探)

  3. 触摸事件的简单测试

  4. if ('ontouchstart' in window) {...}
    
  5. 触摸事件的高级测试:

  6. if (('ontouchstart' in window) ||     // Advanced test for touch events
       (window.DocumentTouch && document instanceof DocumentTouch) ||
       ((hash['touch'] && hash['touch'].offsetTop) === 9)) {...}
    

对于上面的#3和#4,可以选择使用onorientationchange

根据需要组合1个或多个方法(以及其他任何方法)。 这些方法都不是万无一失的。


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