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

Hug*_*Hou 30 cordova ionic-framework ionic2

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

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

小智 57

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

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

这可能会有所帮助:)


Hun*_*ang 21

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

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

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


Luc*_* C. 6

使用此工具,您可以检测您是否在浏览器中:

if(window.hasOwnProperty('cordova')){ /* use webview */ }
else { /* use browser link */ }
Run Code Online (Sandbox Code Playgroud)


ben*_*guo 5

基于hhung,因为核心仅检测您是否使用Windows浏览器打开应用程序,但如果您使用的是chrome mobile emulation,则core将返回false,但mobileweb将返回true.因此,您应该使用以下内容:

if(this.platform.is('core') || this.platform.is('mobileweb')) {
  this.isApp = false;
} else {
  this.isApp = true;
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*xei 5

我在 Ionic 3 应用程序中遇到了同样的问题,并在这里找到一个很好的方法来检查应用程序是在浏览器中运行还是在真实设备/模拟器中运行:

isApp = !document.URL.startsWith('http');
Run Code Online (Sandbox Code Playgroud)

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

  • 这在使用“WKWebview”插件的 iOS 上不起作用,该插件将成为默认设置。 (3认同)