2013-08-01 20 views
12

Zastanawiałem się, czy można wykryć, czy użytkownik iOS używa aplikacji internetowej, czy po prostu odwiedza normalny sposób z przeglądarką Safari.Wykryj, czy iOS używa webappa

Powodem, dla którego chcę osiągnąć, jest to, że na webappie iOS, gdy użytkownik kliknie na link, zostanie przekierowany do przeglądarki Safari. Dlatego używam poniższego rozwiązania, aby zatrzymać go w aplikacji webapp (uniemożliwić przejście do przeglądarki Safari).

$(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"); 

     } 
    ); 

Ale chcę to rozwiązanie tylko się zdarzyć, gdy użytkownik korzysta z webapp, chcę go mieć warunkowy dla użytkowników webapp. Więc nie w domyślnej przeglądarce Safari.

Odpowiedz

23

Trzeba wykryć przy użyciu niektórych javascript:

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

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

Jak można znaleźć tutaj: Determine if site is open as web app or through regular safari on ipad?

i źródła wykorzystane w odpowiedzi jest THIS.

+2

ładne i proste odpowiedzi! Przeszukałem stackoverflow ofc, ale z jakiegoś powodu ten temat się nie pojawił. Nawet wtedy, gdy wszedłem w tytuł mojego pytania ... Dzięki! – koningdavid

+1

I będę, wystarczy poczekać jeszcze 3 minuty;) – koningdavid

+0

@koningdavid: Cieszę się, że mogę ci pomóc! –

4

iOS i Chrome WebApp zachowuje się różnią, to jest to powód, doszedłem do następujących czynności:

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

Uważaj z 'window.matchMedia ('(tryb wyświetlania: standalone)') matches': jest również" true "w oknach podręcznych Chrome Chrome. – Antelle