web-dev-qa-db-ja.com

ionicアプリがdev serveモード(ブラウザ)にあるかどうかを確認します

私が使う ionic serve localhostでアプリを実行します。

Androidではなくbrowserにいるときはどうすればわかりますか?

私は試した:

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

ありがとうございました!

26
Shalev Shalit

おそらく複数の方法がありますが、簡単な方法は、cordovaがAndroid/iOSでのみ定義されるため、

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

編集

一部のテキストエディターおよびTypeScriptパーサーは、Property 'cordova' does not exist on type 'Window'.この問題を回避するには、次を使用できます。

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

タイプanyに明示的にキャストすることにより、トランスパイラーエラーを回避しながら、実行しようとしていることを実行できます。

69
Mirko N.

Window.location.hostnameがlocalhostと等しいかどうかを確認することもできます。

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

使えるとわかった

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

アプリケーションがブラウザで実行されているかどうかを確認します。

重要なことは、ionic.Platform.platforms$ionicPlatform.readyイベントが発生した後にのみ設定されるということです。

6
Ygalbel

使用する

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

または

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

それはあなたがどのプラットフォームにいるかを教えてくれます。 WebviewまたはAndroidまたはiosまたは何でも。

3
Jess Patton

Mirko N。の答えを少し修正。

Cordovaを直接使用する場合、またはウィンドウオブジェクトの子として使用する場合、TypeScriptは実際にエラーを返します。

適切な答えは、ウィンドウが独自のプロパティとしてコルドバを持っているかどうかを確認することです。

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

とりあえず、my Ionic 1アプリ(最新バージョン3.9.xを使用しますが、-type ionic1を使用))で、デスクトップにいるionic.Platform.platform()が「linux」を返していますブラウザではなくwindow.cordovaが存在しますが、window.cordova.platformId == 'browser'であるかどうかを確認できます。

0
felipeaf