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

26

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

我如何知道我在浏览器中而不是在android中?

我尝试过:

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

谢谢你!

6个回答

70

可能有多种方法可以实现,但一种简单的方法是 cordova 只在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 类型,您可以避免转译器错误,并仍然实现您想要做的事情。


2
如果您已经加载了ngCordovaMocks,会怎样呢? - Patrick Fowler
如果在浏览器中cordova不为空,则尝试使用cordova.plugins(至少对我有效)。 - Dylanthepiguy

6
我发现我可以使用
ionic.Platform.platforms[0] == "browser"

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

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


6

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

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

3

使用

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

或者

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

这将告诉您您所在的平台。Webview或Android或iOS或其他。


ionic.Platform.isWebView() => false,ionic.Platform.platform() => ios - Shalev Shalit
好的,那么你要么在使用iOS设备,要么在模拟iOS设备。 - Jess Patton
我正在iPhone 6上使用Chrome设备模式,但仍在使用浏览器。 - Shalev Shalit
是的,但是就应用程序而言,它认为你在使用iPhone 6。这就是仿真的工作原理... - Jess Patton
当我们使用 ionic serve --lab 命令时,它会分别将设备检测为 iOS 和 Android。我该如何检测它们? - Samarth Agarwal
使用ionic.platform方法。 - Jess Patton

0

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


0

对于Mirko N.的回答,只需要进行一点小修正。

如果您直接使用cordova或将其作为window对象的子级,则Typescript实际上会返回错误。

正确的做法是检查window对象是否拥有cordova属性。

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

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接