Как определить, есть ли я в браузере (локальная разработка) в Ionic 2
Я хочу, чтобы запустить inappbrowser только в том случае, если я на устройствах (iOs, Android...), но если я в браузере (локальный режим разработки или просто веб-приложение с gulp), я хочу просто ссылку на эту страницу с target = "_ blank".
Я пытаюсь повторно использовать код Ionic 2 как веб-приложение. Поэтому, когда я создаю приложение, он также будет работать в браузере. Так что для платформы platform.ready() мне недостаточно. Поскольку мне нужно знать, находится ли пользователь в настольном браузере, и я могу сделать что-то другое.
Ответы
Ответ 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>
Мы думаем, что это самый быстрый способ узнать, где мы.