Detecting if a device is able to change orientation in JavaScript
Asked Answered
E

1

7

Is there a native JavaScript (or through the use of a library such as JQuery/Modernizr etc) way to detect if a device is capable of changing orientation? I would like to use that as a method to differentiate between desktop and mobile.

Thanks,

Shadi

Emera answered 10/12, 2012 at 15:23 Comment(3)
Doesn't most OS's support that? In Windows (other desktop OS's as well I guess) you can change orientation depending on the orientation of your screen. Some use their 16:9 screen in a standing, portrait orientation and so on. Thus, I don't think that will be a good way to differentiate between desktop and mobile, unfortunately.Falcongentle
@ChristoferEliasson While I agree it's not the best way to differentiate between desktop and mobile, the important part is detecting the orientation changing feature...which is interesting to find outFlied
Actually, it seems like onorientationchange can be a property of window if that's available. My browser doesn't have it, but it seems like a valid event - #5285378Flied
C
19

Detecting mobile devices:

  1. Simple browser sniffing

    if (/mobile/i.test(navigator.userAgent)) {...}
    
  2. jQuery.browser.mobile plug-in (exhaustive browser sniffing)

  3. Simple test for touch events

    if ('ontouchstart' in window) {...}
    
  4. Advanced test for touch events:

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

Optionally use onorientationchange for #3 and #4 above.

Combine 1 or more of these (and any other approaches) as needed. None of them are foolproof.

Circassia answered 10/12, 2012 at 16:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.