如何检测我是否在Ionic 2的浏览器(本地开发)中

时间:2016-07-19 23:55:11

标签: cordova ionic-framework ionic2

我想确保只在我使用设备(iOs,Android ...)时启动inappbrowser,但如果我在浏览器(本地开发模式或只是带有gulp构建的Web应用程序),我想要使用target =“_ blank”链接到该页面。

我正在尝试将Ionic 2代码重用为Web App。所以当我构建应用程序时,它也可以在浏览器桌面上运行。所以platform.ready()对我来说还不够。因为我需要知道用户是否在桌面浏览器上,我可以做一些不同的事情。

7 个答案:

答案 0 :(得分:53)

在这里,您可以使用以下功能代替点击功能。

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

这可能会有所帮助:)

答案 1 :(得分:20)

您可以使用platform.is('core'),在浏览器时使用true。平台清单:

  • android:在运行Android的设备上。
  • cordova:在运行Cordova的设备上。
  • 核心:在桌面设备上。
  • ios:运行iOS的设备。
  • ipad:在iPad设备上。
  • iphone:在iPhone设备上。
  • mobile:在移动设备上。
  • mobileweb:在移动设备上的浏览器中。
  • phablet:在平板设备上。
  • 平板电脑:在平板电脑设备上。
  • windows:在运行Windows的设备上。

有关详细信息,请参阅http://ionicframework.com/docs/v2/api/platform/Platform/

答案 2 :(得分:5)

基于hhung,因为核心仅检测您是否使用Windows浏览器打开应用程序,但如果您使用的是Chrome移动仿真,核心将返回false,但 mobileweb 将返回true。因此,您应该使用以下内容:

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

答案 3 :(得分:5)

通过此功能,您可以检测到您是否在浏览器中:

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

答案 4 :(得分:4)

我在Ionic 3应用程序中遇到了同样的问题,并发现here是一种检查应用程序是否在浏览器中运行而不是真实设备/模拟器的好方法:

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

基本上,它依赖于真实设备或模拟器使用ftp协议而不是浏览器使用的http来提供资源这一事实。

答案 5 :(得分:1)

对我而言,最可靠的解决方案是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';
      }
    }

答案 6 :(得分:0)

我们有一种简单的方法可以知道我们是在浏览器中运行项目的'/ www'文件夹,还是在设备中运行(模拟/构建)。

在Cordova / Phonegap的本地项目中,index.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标签是否加载此文件。如果加载,我们在App中,如果没有,我们在浏览器(本地):

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

我们认为是知道我们在哪里的最快方式。