2012-11-07 7 views
9

Damit Mapping-Links die Karten-App wie gewohnt öffnen, möchte ich einen anderen Link anzeigen, je nachdem, ob ein Benutzer auf iOS 6 oder anderen Geräten (iOS 4, 5, Android, was auch immer).Wie kann ich bestimmte iOS-Version mit jquery erkennen?

Etwas wie: - wenn auf iOS 6.0 oder höher, zeigen Sie http://maps.apple.com?q= "Adresse", wenn andere, zeigen Sie http://maps.google.com?q= "Adresse".

HINWEIS: Ich weiß, Sie können auch die Karten App direkt im Gegensatz zu über einen Weblink aufrufen (nicht gerade griffbereit), aber das würde das Problem nicht beheben, da jemand auf Android oder weniger iOS würde davon nichts nützen.

+0

Vielleicht hilft dies: http://stackoverflow.com/questions/8348139/detect-ios-version-less-than- 5-with-javascript – David

+0

die Info bei diesem Link hat es geschafft. Vielen Dank! –

Antwort

16

Sie können iOS-Version mit der navigator.userAgent Zeichenfolge erkennen. Etwas wie:

Beachten Sie, dass dies in keiner Weise zukunftssicher ist, können User Agent Strings ändern, und so wird das Betriebssystem. Auch AFAIK, Google Maps über den Browser ist auf allen Plattformen verfügbar, einschließlich iOS 6.

+0

Danke David. Der Link, den Sie oben gepostet haben, ist weniger elegant als dieser, aber scheint, als wäre er zukunftssicherer, also ging ich damit um. Vielen Dank! –

2

Sie möchten in die User-Agent-Zeichenfolge suchen. Der Safari-Webbrowser bietet eine Möglichkeit, zu berichten, welches Gerät (iPad, iPhone usw.) verwendet wird, und auch die Versionsnummer, daher ist es eine Frage des Index der Informationen in dieser kompakten kleinen Zeichenfolge.

http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3

Einige andere hilfreiche/sehr verwandte Fragen Stackoverflow:

Detect iOS version less than 5 with JavaScript

Detecting iOS Version on a Web Page

Check if iOS version is 3.0 or higher with PHP or Javascript

1

Verwenden Sie JavaScript, um den Header des Benutzeragenten zu betrachten.

navigator.userAgent 
4

Hier ist ein bisschen von JS, um iOS und Android OS Version zu bestimmen. Keine jQuery erforderlich.

Getestet mit tatsächlichen User-Agent-Strings für iOS 4.3 bis 6.0.1 und 2.3.4 bis 4,2

var userOS; // will either be iOS, Android or unknown 
var userOSver; // this is a string, use Number(userOSver) to convert 

function getOS() 
{ 
    var ua = navigator.userAgent; 
    var uaindex; 

    // determine OS 
    if (ua.match(/iPad/i) || ua.match(/iPod/i) || ua.match(/iPhone/i)) 
    { 
    userOS = 'iOS'; 
    uaindex = ua.indexOf('OS '); 
    } 
    else if (ua.match(/Android/i)) 
    { 
    userOS = 'Android'; 
    uaindex = ua.indexOf('Android '); 
    } 
    else 
    { 
    userOS = 'unknown'; 
    } 

    // determine version 
    if (userOS === 'iOS' && uaindex > -1) 
    { 
    userOSver = ua.substr(uaindex + 3, 3).replace('_', '.'); 
    } 
    else if (userOS === 'Android' && uaindex > -1) 
    { 
    userOSver = ua.substr(uaindex + 8, 3); 
    } 
    else 
    { 
    userOSver = 'unknown'; 
    } 
} 

Dann eine bestimmte Version und höher zu erkennen, versuchen:

if (userOS === 'iOS' && Number(userOSver.charAt(0)) >= 5) { ... } 
0

Die Verwendung der User-Agent-Zeichenfolge ist der richtige Ansatz. Wenn Sie daran interessiert sind, die Betriebssystemversion zu erhalten, sei es iOS, Android oder sogar Windows/Mac/BlackBerry, habe ich diese detect-os-version Komponente geschrieben, die genau das tut. Es berücksichtigt auch verschiedene Versionen von Benutzeragenten.

Fühlen Sie sich frei, es zu importieren und verwenden, wie in diesen Beispielen gezeigt:

detectOsVersion.get() => {os: 'iOS', version: '5.1.1'} 
detectOsVersion.get() => {os: 'BlackBerry', version: '7.1.0.346'}  
detectOsVersion.get() => {os: 'Windows', version: '8.1'} 
detectOsVersion.get() => {os: 'Android', version: '4.2.2'} 
detectOsVersion.get() => {os: 'Mac', version: '10.7.1'} 
Verwandte Themen