2012-11-07 11 views
9

Dzięki temu, że linki odwzorowujące otwierają aplikację map podobną do poprzednio, chcę przedstawić inny link w zależności od tego, czy użytkownik jest na iOS 6 lub w innym (iOS 4, 5, Android, cokolwiek).Jak mogę wykryć konkretną wersję systemu iOS z jquery?

Coś jak: - jeśli na iOS 6.0 lub nowszym, pokaż http://maps.apple.com?q= "adres", jeśli inne, pokaż http://maps.google.com?q= "adres".

UWAGA: Zdaję sobie sprawę, można również wywołać aplikację map bezpośrednio w przeciwieństwie do za pośrednictwem łącza (nie mam go pod ręką teraz), ale to nie rozwiąże problemu, ponieważ ktoś na Androida lub mniejszym iOS nie będzie z tego korzystać.

+0

Może to pomoże: http://stackoverflow.com/questions/8348139/detect-ios-version-less-than- 5-z-javascript – David

+0

informacja pod tym linkiem całkowicie to zrobiła. dzięki! –

Odpowiedz

16

można wykryć wersję iOS przy użyciu ciąg navigator.userAgent. Coś jak:

if(/(iPhone|iPad|iPod)\sOS\s6/.test(navigator.userAgent)) { 
    // use apple maps 
} 

Należy zauważyć, że nie jest to w żaden sposób dowód na przyszłość, ciągi agenta użytkownika mogą ulec zmianie, podobnie jak system operacyjny. Również AFAIK, mapy google za pośrednictwem przeglądarki są dostępne na wszystkich platformach, w tym iOS 6.

+0

Dzięki David. Link zamieszczony powyżej jest mniej elegancki niż ten, ale wydaje się, że byłby bardziej przyszłościowy, więc poszedłem z tym. Dzięki! –

2

Chcesz przejrzeć ciąg znaków użytkownika. Przeglądarka Safari ma sposób raportowania, które urządzenie (iPad, iPhone itp.) Jest używane, a także numer wersji, więc jest to kwestia indexOf informacji w tym niewielkim łańcuchu.

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

Kilka innych osób/bardzo podobne pytania 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

Użyj JavaScript, aby spojrzeć na nagłówek agenta użytkownika.

navigator.userAgent 
4

Oto trochę JS, aby określić wersję systemu operacyjnego iOS i Android. Nie wymaga jQuery.

Testowane z rzeczywistych ciągów agenta użytkownika dla iOS 4.3 do 6.0.1, a Android 2.3.4 do 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'; 
    } 
} 

Następnie wykryć konkretną wersję i wyżej, spróbuj:

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

Używanie łańcucha agenta użytkownika jest właściwym podejściem. Jeśli jesteś zainteresowany uzyskaniem wersji OS, czy to na system iOS, Android, czy nawet Windows/Mac/BlackBerry, napisałem ten komponent detect-os-version, który robi dokładnie to. Uwzględnia także różne wersje agentów użytkownika.

Zapraszam do importowania i używać go w sposób pokazany na poniższych przykładach:

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'} 
Powiązane problemy