离子角:在(外部)移动浏览器中打开链接

El *_*red 5 browser android ionic-framework

我不想在我的 Ionic 应用程序中打开链接,所以我试图让链接在移动浏览器中打开。这里的第一个例子工作正常。当 URL 位于“window.open”命令内时,外部浏览器将按预期启动。

            <p class="descriptive-class">
               <a ng-href="" onclick="window.open('https://stackoverflow.com', '_system', 'location=yes')">
                  <img src="assets/img/awesome_picture.png" alt="blablabla">
               </a>
            </p>
Run Code Online (Sandbox Code Playgroud)

问题出在这部分,我想将 URL 的参数提供给代码。我不能直接在“window.open()”中设置它,所以我必须将它移动到“ng-href”,然后通过“this.href”引用它。

Android 似乎没有正确理解这一点。它向我展示了 Android 上的“Complete action using”对话框,然后展示了 HTML 文档处理程序应用程序。它不理解浏览器链接。

如何最好地纠正这种情况?

            <p class="descriptive-class">
               <a href="#" ng-href="item.webURL" onclick="window.open(this.href, '_system', 'location=yes')">
                  {{ item.webURL }}
               </a>
           </p>
Run Code Online (Sandbox Code Playgroud)

Ger*_*oer 9

在这种情况下,最简单的方法是安装In App Browser插件。

它会打开一个带有设备已安装浏览器的 URL。首先添加并安装插件:

*$ ionic cordova plugin add cordova-plugin-inappbrowser*
*$ npm install --save @ionic-native/in-app-browser*
Run Code Online (Sandbox Code Playgroud)

将它添加到你的app.module.ts

import { InAppBrowser } from '@ionic-native/in-app-browser';
Run Code Online (Sandbox Code Playgroud)

并将其添加到您的提供者

@NgModule({
  ...

  providers: [
    ...
    InAppBrowser
    ...
  ]
  ...
})
Run Code Online (Sandbox Code Playgroud)

然后在相关页面上添加:

constructor(private iab: InAppBrowser) { }

openBrowser(){
    this.iab.create('https://ionicframework.com/');
}
Run Code Online (Sandbox Code Playgroud)

调用openBrowser()你的(点击)方法,你就设置好了!

另见:https : //ionicframework.com/docs/native/in-app-browser/

  • 这确实是一个更简单的解决方案,最终更干净。我被插件的名称“应用内浏览器”误导了,但它也可以启动外部浏览器!给出的示例中的文档有点不清楚,因此在外部浏览器中调用链接的代码如下所示: `openExternalBrowser(link) { this.iab.create(link, '_system'); }` (2认同)