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

Sha*_*lit 26 javascript browser ionic-framework ionic

我用来ionic serve在localhost上运行我的应用程序.

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

我试过了:

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

谢谢!

Mir*_* N. 69

可能有不止一种方法可以做到这一点,但一个简单的方法cordova只能在Android/iOS上定义,所以你可以这样做

if (window.cordova) {
  // running on device/emulator
} else {
  // running in dev mode
}
Run Code Online (Sandbox Code Playgroud)

编辑

某些文本编辑器和TypeScript解析器可能会抱怨Property 'cordova' does not exist on type 'Window'.为了解决这个问题,您可以使用以下命令:

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

通过显式转换为类型,any您可以避免转换器错误,并且仍然可以完成您正在尝试执行的操作.

  • 如果你加载了ngCordovaMocks怎么办? (2认同)

Yga*_*bel 6

我发现我可以用

ionic.Platform.platforms[0] == "browser"
Run Code Online (Sandbox Code Playgroud)

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

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


Jac*_*ack 6

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

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