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!
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
}
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.
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/';
}
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
.
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.
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
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.