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

Как определить, есть ли я в браузере (локальная разработка) в Ionic 2

Я хочу, чтобы запустить inappbrowser только в том случае, если я на устройствах (iOs, Android...), но если я в браузере (локальный режим разработки или просто веб-приложение с gulp), я хочу просто ссылку на эту страницу с target = "_ blank".

Я пытаюсь повторно использовать код Ionic 2 как веб-приложение. Поэтому, когда я создаю приложение, он также будет работать в браузере. Так что для платформы platform.ready() мне недостаточно. Поскольку мне нужно знать, находится ли пользователь в настольном браузере, и я могу сделать что-то другое.

4b9b3361

Ответ 1

Здесь вы идете., вы можете использовать следующую функцию для замены вашей функции щелчка.

onClickOfButton(){
      // Check If Cordova/Mobile
   if (this.platform.is('cordova')) {
        window.location.href = url;
   }else{
        window.open(url,'_blank');
   }
}

Это может быть полезно:)

Ответ 2

Вы можете использовать platform.is('core'), true, когда в браузере. Список платформ:

  • android: на устройстве под управлением Android.
  • cordova: на устройстве, работающем на Кордове.
  • : на настольном устройстве.
  • ios: устройство под управлением iOS.
  • ipad: на устройстве iPad.
  • iphone: на устройстве iPhone.
  • мобильный: на мобильном устройстве.
  • mobileweb: в браузере на мобильном устройстве.
  • phablet: на устройстве phablet.
  • планшет: на планшетном устройстве.
  • windows: на устройстве под управлением Windows.

Подробнее см. http://ionicframework.com/docs/v2/api/platform/Platform/.

Ответ 3

При этом вы можете определить, находитесь ли вы в браузере:

if(window.hasOwnProperty('cordova')){ /* use webview */ }
else { /* use browser link */ }

Ответ 4

Основание на hhung, потому что Ядро обнаруживает только, если вы используете браузер Windows, открывающий приложение, но если вы используете хром-мобильную эмуляцию, core вернет false, но mobileweb вернет значение true. Поэтому вы должны использовать следующее:

if(this.platform.is('core') || this.platform.is('mobileweb')) {
  this.isApp = false;
} else {
  this.isApp = true;
}

Ответ 5

Я столкнулся с той же проблемой в приложении Ionic 3 и нашел здесь хороший способ проверки, работает ли приложение в браузере по сравнению с реальным устройством/эмулятором:

isApp = !document.URL.startsWith('http');

В основном это зависит от того факта, что реальные устройства или эмуляторы обслуживают ресурсы, используя протокол file, а не http, используемый браузерами.

Ответ 6

Самым надежным решением для меня было сочетание метода Platform.is() и его обещанного результата. Я использовал чек внутри провайдера, чтобы я мог использовать его во всем мире. Возможно, этот подход полезен для тех, кто исчерпал другие пути.

import { Platform } from 'ionic-angular';

constructor(public platform: Platform) { 

  public env:string = 'dev';

  this.platform.ready().then((readySource) => {

    if (readySource) {
      if (platform.is('core') || readySource.toLowerCase() !== 'cordova') {
        this.env = 'dev';
      }
      else {
        this.env = 'production';
      }
    }

Ответ 7

У нас есть простой способ узнать, будем ли мы запускать папку "/www" проекта в браузере или на устройстве (эмулировать/строить).

В локальных проектах Cordova/Phonegap индекс .html имеет эту метку:

<script type="text/javascript" src="cordova.js"></script>

Но этот файл не существует, потому что Cordova/Phonegap будет вводить phonegap.js или cordova.js, когда мы будем эмулировать или строить. И если мы запустим папку www в браузере, всегда можно увидеть такую ​​ошибку:

GET file:///D:/Cordova/Workspace/TestProject/www/cordova.js net::ERR_FILE_NOT_FOUND

Затем мы можем проверить метку index.html, если этот файл загружен или нет. Если загружается, мы находимся в приложении, если нет, мы находимся в браузере (локальном):

<script type="text/javascript" src="cordova.js" onload="alert('app!');"></script>

Мы думаем, что это самый быстрый способ узнать, где мы.