检查离子应用程序是否处于开发服务模式(浏览器)
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
我使用 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