我使用ionic serve
在localhost上运行我的应用程序。
我怎么知道我什么时候在浏览器而不是 android ?
我试过了:
navigator.platform // MacIntel
navigator.platforms // undefined
ionic.Platform.is('BROWSER') // false
navigator.userAgent // ...iPhone... => i'm in chrome device mode
谢谢!
答案 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)