6

Esiste un codice JavaScript nativo (o tramite l'uso di una libreria come JQuery/Modernizr ecc.) Per rilevare se un dispositivo è in grado di cambiare l'orientamento? Mi piacerebbe usarlo come metodo per distinguere tra desktop e mobile.Rilevare se un dispositivo è in grado di cambiare l'orientamento in JavaScript

Grazie,

Shadi

+3

Non supporta la maggior parte del sistema operativo? In Windows (anche altri sistemi operativi desktop credo) è possibile modificare l'orientamento in base all'orientamento dello schermo. Alcuni usano il loro schermo 16: 9 in piedi, orientamento verticale e così via. Pertanto, non credo che sia un buon modo per distinguere tra desktop e dispositivi mobili, sfortunatamente. –

+0

@ChristoferEliasson Anche se sono d'accordo non è il modo migliore per distinguere tra desktop e mobile, la parte importante è rilevare la funzione di modifica dell'orientamento ... che è interessante scoprire – Ian

+2

In realtà, sembra che "onorientationchange" possa essere una proprietà di 'window' se è disponibile. Il mio browser non ce l'ha, ma sembra un evento valido: http://stackoverflow.com/questions/5284878/how-do-i-correctly-detect-orientation-change-using-javascript-and-phonegap- in-io – Ian

risposta

16

Rilevamento dispositivi mobili:

  1. semplice browser sniffing

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

  3. prova semplice per gli eventi di tocco

    if ('ontouchstart' in window) {...} 
    
  4. prova avanzato per gli eventi di tocco:

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

utilizzare facoltativamente onorientationchange per 3 # e # 4 di cui sopra.

Combina 1 o più di questi (e di qualsiasi altro approccio) secondo necessità. Nessuno di questi è infallibile.