2013-08-01 11 views
12

Ich frage mich, ob es möglich ist zu erkennen, ob ein iOS-Benutzer die Webanwendung verwendet, oder einfach den normalen Weg mit Safari-Browser zu besuchen.Ermitteln, ob iOS webapp verwendet

Der Grund, warum ich erreichen möchte ist, dass auf einer iOS-Webapp, wenn ein Benutzer auf einen Link klickt, er zum Safari-Browser weitergeleitet wird. Daher verwende ich die folgende Problemumgehung, um ihn in der Webapp zu bleiben (verhindere den Wechsel zum Safari-Browser).

$(document).on("click",".nav ul li a", 
     function(event){ 

     // Stop the default behavior of the browser, which 
     // is to change the URL of the page. 
     event.preventDefault(); 

     // Manually change the location of the page to stay in 
     // "Standalone" mode and change the URL at the same time. 
     location.href = $(event.target).attr("href"); 

     } 
    ); 

Aber ich will diese Abhilfe nur geschehen, wenn der Benutzer die Webapp verwendet, möchte ich es für Webapp Benutzer abhängig sein. Also nicht auf dem Standard-Safari-Browser.

Antwort

23

Sie haben, dies zu erkennen, indem einige Javascript verwenden:

<script> 
if (
    ("standalone" in window.navigator) &&  // Check if "standalone" property exists 
    !window.navigator.standalone    // Test if using standalone navigator 
    ){ 

    // .... code here .... 
} 
</script> 
</head> 

Wie finden Sie hier: Determine if site is open as web app or through regular safari on ipad?

Und die in der Antwort verwendet Quelle ist THIS.

+2

Nizza und einfache Antwort! Ich habe stackoverflowofc gesucht, aber aus irgendeinem Grund tauchte dieses Thema nicht auf. Nicht einmal als ich den Titel meiner Frage eingegeben habe ... Danke! – koningdavid

+1

Und ich werde, muss nur noch 3 Minuten warten;) – koningdavid

+0

@koningdavid: Froh, Ihnen zu helfen! –

4

iOS und Chrome WebApp verhält sich anders, das ist der Grund, warum ich zu folgenden kam:

isInWebAppiOS = (window.navigator.standalone == true); 
isInWebAppChrome = (window.matchMedia('(display-mode: standalone)').matches); 
+1

Seien Sie vorsichtig mit 'window.matchMedia ('(display-mode: standalone)'). Matches': Es ist auch 'wahr' in Desktop-Chrome-Popup-Fenstern. – Antelle

Verwandte Themen