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

时间:2015-05-07 18:43:54

标签: 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

谢谢!

6 个答案:

答案 0 :(得分:69)

可能不止一种方法可以做到这一点,但一个简单的方法就是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类型,您可以避免转换错误,并且仍然可以完成您尝试执行的操作。

答案 1 :(得分:6)

我发现我可以使用

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

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

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

答案 2 :(得分:6)

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

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

答案 3 :(得分:3)

使用

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

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

Mirko N 回答稍作修正。

如果您直接使用cordova或作为窗口对象的子项,

Typescript实际上会返回错误。

正确的答案是检查窗口是否有cordova作为自己的财产。

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

enter image description here