繁体   English   中英

如何在 Ionic/Angular 混合应用程序中使用cordova inappbrowser 打开链接

[英]How do I use cordova inappbrowser to open links in Ionic/Angular hybrid app

我正在使用 Ionic Framework 和 AngularJS 开发混合移动应用程序。 我正在使用 Ionic Creator 和 Ionic Lab。 在我的应用程序中,我有几个按钮可以链接到外部资源(网页、mailto:链接、pdf 文件等)。 当我在浏览器(离子实验室)中测试它们时,这些链接工作正常。 但是,当我在 Android 虚拟设备或实际设备中测试该应用程序时,所有链接都不起作用。

我发现了一个有人遇到类似问题的问题:

/questions/33627061/ionic-simple-href-not-working-on-android-device

我尝试从添加到 config.xml 中实现所有建议的解决方案:

<allow-navigation href="*" />

通过以下方式安装cordova inappbrowser插件:

$sudo cordova plugin add cordova-plugin-inappbrowser

我尝试使用 ng-click="some_function()" 而不是 href,然后在我的控制器中定义函数。

关于该问题的 OP 最终通过从 index.html 注释掉/取消注释解决了他的问题:

<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>

查看我的浏览器控制台日志,找不到cordova.js 的404,因此我手动将其从android 的platform_www/ 目录以及cordova_plugins.js 添加到www/

然而,在尝试了所有这些之后,链接仍然无法正常工作。 在我的控制台日志中,我现在收到一条错误消息:

GET http://localhost:8100/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js 404 (Not Found)
Uncaught Error: Module cordova-plugin-inappbrowser.inappbrowser does not exist. http://localhost:8100/cordova.js Line: 1421

但问题是 inappbrowser.js 在那个文件夹中!

请帮忙! 我不知所措,不知道下一步该做什么。 我已经上传了我在 github 上使用的示例代码:

https://github.com/chmod-777/link-test

软件版本:

Linux mint 17.1 node v0.12.2 npm 2.7.4 cordova 6.2.0 ionic 1.7.14

首先,尝试将您在控制器代码中调用open方法的方式更改为:

.controller('pageCtrl', function($scope, $window, $cordovaInAppBrowser) {

    $scope.open_google = function() {
          $cordovaInAppBrowser.open('https://www.yahoo.com/', '_system', 'clearcache=yes');
          // I also tried this
          //$window.open('https://www.msn.com/', '_system', 'location=yes');
          // and this
          //window.open('https://www.netflix.com/', '_system', 'location=yes');
        }

})

我在 Jquery mobile 中使用了 inappBrowser 插件。它工作正常。

                 ref=null;


                var url= accRestService.someURL;

                if( device.platform === "Android"){
                ref =cordova.InAppBrowser.open(url, "_blank",'location=no,clearcache=yes,hardwareback=no,zoom=no');
                }else{
                    ref =cordova.InAppBrowser.open(url, "_blank",'location=no,clearcache=yes,closebuttoncaption=Go back to App,toolbar=yes,presentationstyle=formsheet');
                }


                ref.addEventListener('loadstart',onBrowserLoadStart);
                ref.addEventListener('loadstop',onBrowserLoadStop);
                ref.addEventListener('loaderror', onBrowserError);
                ref.addEventListener('exit', onBrowserClose);

首先,确保你已经安装了cordova插件“inappbrowser”

cordova plugin add cordova-plugin-inappbrowser

(见https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/index.html

然后,您可以使用例如:

try {
    var uri = "http://some-example.com";
    cordova.InAppBrowser.open(uri, '_system');
} catch(e) {
    window.open(uri, '_blank');
}

在浏览器中测试应用程序时,catch 块将用作后备。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM