web-dev-qa-db-fra.com

Vérifier si l'application ionique est en mode dev serve (navigateur)

J'utilise ionic serve pour exécuter mon application sur localhost.

comment savoir si je suis dans browser et pas dans Android ?

J'ai essayé:

navigator.platform // MacIntel
navigator.platforms // undefined
ionic.Platform.is('BROWSER') // false
navigator.userAgent // ...iPhone... => i'm in chrome device mode

Je vous remercie!

26
Shalev Shalit

Il y a probablement plus d'une façon de le faire, mais l'une des plus simples est que cordova ne sera défini que sur Android/iOS afin que vous puissiez le faire.

if (window.cordova) {
  // running on device/emulator
} else {
  // running in dev mode
}

Modifier

Certains éditeurs de texte et analyseurs syntaxiques TypeScript peuvent se plaindre de Property 'cordova' does not exist on type 'Window'. Pour contourner ce problème, vous pouvez utiliser les éléments suivants:

if ((<any>window).cordova) {
  // running on device/emulator
} else {
  // running in dev mode
}

En utilisant explicitement any pour transtyper, vous pouvez éviter les erreurs de transpiler tout en réalisant ce que vous essayez de faire.

68
Mirko N.

Vérifier si window.location.hostname est égal à localhost fonctionnera aussi.

if(window.location.hostname === "localhost"){
    return 'http://localhost:8100/api/';
} else {
    return 'https://some-api.com/';
}
6
Jack

J'ai trouvé que je peux utiliser

ionic.Platform.platforms[0] == "browser"

pour vérifier si l'application est en cours d'exécution dans un navigateur ou non.

Ce qui est important, ionic.Platform.platforms est défini uniquement après le déclenchement de l'événement $ionicPlatform.ready.

6
Ygalbel

utilisation

if(ionic.Platform.isWebView()){
  console.log('i am in a browser webview!');
}

ou

console.log(ionic.Platform.platform());

Cela vous dira sur quelle plate-forme vous vous trouvez. Webview ou Android ou iOS ou autre chose.

3
Jess Patton

Juste une petite correction à la réponse de Mirko N..

TypeScript renverra en fait une erreur si vous utilisez cordova directement ou en tant qu’objet enfant de window.

La bonne réponse est de vérifier si window a pour propriété propre Cordova.

if(window.cordova) //returns error "Property 'cordova' does not exist on type 'Window'."

if(window.hasOwnProperty('cordova')) //Proper Check

 enter image description here

0
ProllyGeek

Pour le moment, dans mon application Ionic 1 (utilisant la dernière version 3.9.x, mais avec --type ionic1), ionic.Platform.platform () lorsque je suis dans le bureau renvoie "linux", pas "navigateur". Et window.cordova existe maintenant dans le navigateur, mais vous pouvez vérifier si window.cordova.platformId == 'navigateur'. Il semble que le travail ici.

0
felipeaf