Подтвердить что ты не робот

Проверьте, работает ли ионное приложение в режиме dev-сервиса (браузер)

Я использую ionic serve для запуска моего приложения на локальном хостинге.

как узнать, когда я нахожусь в браузере, а не в андроиде?

Я пробовал:

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

Спасибо!

4b9b3361

Ответ 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

введите описание изображения здесь