2016-07-19 13 views
20

Chcę się upewnić, że uruchamiam inappbrowser tylko jeśli jestem na urządzeniach (iOs, Android ...), ale jeśli jestem w przeglądarce (rozwój lokalny tryb lub po prostu aplikacja internetowa z budową gulp), chcę po prostu połączyć się z tą stroną z target = "_ blank".Jak wykryć, czy jestem w przeglądarce (rozwój lokalny) w Ionic 2

Próbuję ponownie użyć kodu Ionic 2 jako aplikacji sieci Web. Więc kiedy będę budował aplikację, będzie działać również na pulpicie przeglądarki. Zatem platform.ready() to dla mnie za mało. Ponieważ muszę wiedzieć, czy użytkownik jest w przeglądarce na komputerze i mogę zrobić coś innego.

Odpowiedz

34

W tym miejscu możesz skorzystać z poniższej funkcji w celu zastąpienia funkcji kliknięcia.

onClickOfButton(){ 
     // Check If Cordova/Mobile 
    if (this.platform.is('cordova')) { 
     window.location.href = url; 
    }else{ 
     window.open(url,'_blank'); 
    } 
} 

To może być pomocne :)

+0

Idealne, dziękuję. –

15

Możesz użyć platform.is('core'), prawda w przeglądarce. Lista platform:

  • Android: na urządzeniu z systemem Android.
  • cordova: na urządzeniu z Cordova.
  • rdzeń: na komputerze stacjonarnym.
  • ios: urządzenie z systemem iOS.
  • ipad: na urządzeniu iPad.
  • iphone: na urządzeniu iPhone.
  • Komórka: na urządzeniu mobilnym.
  • mobileweb: w przeglądarce na urządzeniu mobilnym.
  • phablet: na urządzeniu phablet.
  • tablet: na tablecie.
  • Windows: na urządzeniu z systemem Windows.

Aby uzyskać więcej informacji, zobacz http://ionicframework.com/docs/v2/api/platform/Platform/.

+0

nie działa z najnowszym ionic2. Zwraca wartość false podczas testowania "core", jeśli umieścisz przeglądarkę Chrome na komputerze w emulacji mobilnej. – Johncl

+1

Powinieneś powiedzieć "ios", a nie "ioson" –

+0

tak nie działa dla mnie z RC3, gdy używasz mobilnej przeglądarki Chrome w trybie pulpitu. Czy istnieje inne rozwiązanie tego problemu? – carstenbaumhoegger

3

Base hhung, ponieważ rdzeń tylko wykryć, jeśli używasz przeglądarki oknami aplikacji, ale jeśli używasz emulacji chrom mobilną rdzeń zwróci false, ale zwróci true, ale mobileweb. Dlatego należy użyć następujących:

if(this.platform.is('core') || this.platform.is('mobileweb')) { 
    this.isApp = false; 
} else { 
    this.isApp = true; 
} 
0

Mamy prosty sposób dowiedzieć się, czy jesteśmy uruchamiając „/ www” folder projektu w przeglądarce lub w urządzeniu (emulować/build).

w lokalnych projektach Cordova/PhoneGap, index.html ma tę etykietę:

<script type="text/javascript" src="cordova.js"></script> 

Ale ten plik nie istnieje, ponieważ Cordova/PhoneGap wstrzyknie phonegap.js lub cordova.js kiedy emulować lub zbuduj. A jeśli prowadzimy folder www w przeglądarce, zawsze widzi błąd tak:

GET file:///D:/Cordova/Workspace/TestProject/www/cordova.js net::ERR_FILE_NOT_FOUND 

Wtedy możemy sprawdzić na etykiecie, czy ten plik index.html obciążeń czy nie.Jeśli ładunku, jesteśmy w aplikacji, jeśli nie jesteśmy w przeglądarce (lokalny):

<script type="text/javascript" src="cordova.js" onload="alert('app!');"></script> 

Uważamy to najszybszy sposób, aby wiedzieć, gdzie jesteśmy.

2

Mam wobec tego samego problemu w aplikacji Ionic 3 i okazało here miłym sposobem na sprawdzenie, czy aplikacja działa w przeglądarce vs. rzeczywistym urządzeniu/emulatorze:

isApp = !document.URL.startsWith('http'); 

w zasadzie opiera się na fakcie, że rzeczywiste urządzenia lub emulatory obsługują zasoby przy użyciu protokołu ftp, a nie http, jak używane przez przeglądarki.

+1

To nie zadziała na iOS przy użyciu wtyczki "WKWebview", która ma być domyślna. – Blunderfest

0

Dzięki temu można wykryć, czy jesteś w przeglądarce:

if(window.hasOwnProperty('cordova')){ /* use webview */ } 
else { /* use browser link */ } 
+0

To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. - [Z recenzji] (/ opinia/niskiej jakości-posts/18962281) – AK47

Powiązane problemy