Проверьте, работает ли ионное приложение в режиме dev-сервиса (браузер)
Я использую ionic serve
для запуска моего приложения на локальном хостинге.
как узнать, когда я нахожусь в браузере, а не в андроиде?
Я пробовал:
navigator.platform // MacIntel
navigator.platforms // undefined
ionic.Platform.is('BROWSER') // false
navigator.userAgent // ...iPhone... => i'm in chrome device mode
Спасибо!
Ответы
Ответ 1
Вероятно, существует несколько способов сделать это, но простой способ состоит в том, что 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
Я нашел, что могу использовать
ionic.Platform.platforms[0] == "browser"
чтобы проверить, запущено ли приложение в браузере или нет.
Важно, ionic.Platform.platforms
устанавливается только после запуска события $ionicPlatform.ready
.
Ответ 3
Проверка того, будет ли window.location.hostname равно localhost, тоже будет работать.
if(window.location.hostname === "localhost"){
return 'http://localhost:8100/api/';
} else {
return 'https://some-api.com/';
}
Ответ 4
использование
if(ionic.Platform.isWebView()){
console.log('i am in a browser webview!');
}
или
console.log(ionic.Platform.platform());
Это скажет вам, на какой платформе вы находитесь. Webview или Android или ios или что-то еще.
Ответ 5
Пока, в моем приложении Ionic 1 (используя последнюю версию 3.9.x, но с --type ionic1), ionic.Platform.platform(), когда я нахожусь на рабочем столе, возвращает "linux", а не "браузер". И window.cordova теперь существует в браузере, но вы можете проверить, является ли window.cordova.platformId == 'браузером'. Кажется, здесь работает.
Ответ 6
Небольшая коррекция ответа Mirko N..
Typescript будет действительно возвращать ошибку, если вы используете кордову напрямую или как дочерний объект окна.
Правильный ответ - проверить, имеет ли окно кордову в качестве собственного имущества.
if(window.cordova) //returns error "Property 'cordova' does not exist on type 'Window'."
if(window.hasOwnProperty('cordova')) //Proper Check
![введите описание изображения здесь]()