检查离子应用程序是否处于开发服务模式(浏览器)

Check if ionic app is in dev serve mode(browser)

我使用 ionic serve 来 运行 我在本地主机上的应用程序。

我怎么知道我在 浏览器 而不是 android

我试过了:

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

谢谢!

使用

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

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

这会告诉你你在哪个平台上。 Webview 或 android 或 ios 或其他。

可能有不止一种方法可以做到这一点,但一个简单的方法是 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 类型,您可以避免转译器错误,并且仍然可以完成您想要做的事情。

我发现我可以使用

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

检查应用程序是否在浏览器中 运行。

重要的是,ionic.Platform.platforms 仅在触发 $ionicPlatform.ready 事件后设置。

检查 window.location.hostname 是否等于 localhost 也可以。

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

目前,在我的 Ionic 1 应用程序中(使用最新版本 3.9.x,但使用 --type ionic1),ionic.Platform.platform() 当我在桌面时返回 "linux",而不是 "browser"。 window.cordova 现在存在于浏览器中,但您可以检查是否 window.cordova.platformId == 'browser'。似乎在这里工作。

只是对 Mirko N. 回答的一点修正。

如果您直接使用 cordova 或作为 window 对象的子对象,Typescript 实际上会 return 错误。

正确的答案是检查 window 是否拥有自己的 cordova 属性。

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

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