【问题标题】:Ionic hrefs not opening in Android离子 href 未在 Android 中打开
【发布时间】:2016-08-10 19:51:39
【问题描述】:

我一直在开发一个使用来自服务器的 JSON 数据的应用程序。在这个 JSON 数据中有一个由 HTML 组成的对象,其中通常包含一个 URL。而且我还有一个“只是”一个 URL 的对象,我将其加载到一个按钮中,单击该按钮应该打开该 URL。然而,问题是,当我在 Ionic View 应用程序中单击 URL 时,URL 将在应用程序本身内打开。但是,当我在 Android 上的独立版本中单击 URL 时,这两个 URL 都不起作用。我试图完成的是,单击时这两个 URL 都会在系统浏览器中打开。但我似乎无法找出为什么这不起作用

我的 index.html 中确实有 Cordova 脚本,并且我还从 Cordova 安装了 InAppBrowser 插件。

这是按钮:

<a class="button button-full button-assertive" ng-model="button" ng-click="openUrl({{vacature.url}})"> Sollicitatielink </a>

这是我的 controllers.js 中的函数:

$scope.openUrl = function(url) {

    window.open(url, '_system', 'location=yes');

};

这是 JSON 数据中的 HTML:

<a href="url_here" target="_blank">via our website.</a>

我想知道你们是否可以帮助我解决为什么这不起作用。难道是我没有正确实现插件,如果是这样,我该如何正确地做到这一点?

提前致谢!

【问题讨论】:

  • 你试过&lt;a ng-href="url_here" target="_blank"&gt;via our website.&lt;/a&gt; 吗?附言检查ng-click="openUrl({vacature.url}})" 的括号。在那里你可以使用ui-sref="openUrl({vacature.url})"
  • 我确实试过了,是的,但问题是只有在使用 ionic serve 进行测试时,它才在浏览器中有效,这在 Android 应用程序本身中不起作用......另外,谢谢你的提示!输入错误.. :/
  • 试试这个&lt;a href="#" onclick="window.open('http://www.example.com', '_system', 'location=yes'); return false;"&gt;via our website.&lt;/a&gt;。在设备上进行测试时,您是否在控制台中遇到任何错误?
  • 我收到错误:错误:[$parse:syntax] 语法错误:令牌 ':' 出乎意料,在表达式 [window.open 的第 18 列应为 [)] (.... 语法错误似乎与 URL 中包含 https: 的事实有关....

标签: javascript html json ionic-framework


【解决方案1】:

这就是我实现插件并为我工作的方式:

    <button class="button button-block button-stable" ng-click="openInBrowser('https://www.google.com')">
        GOOGLE
    </button>

然后在JS中

myApp.controller('NameCtrl', ['$scope', '$ionicPlatform', '$cordovaInAppBrowser', function($scope, $ionicPlatform, $cordovaInAppBrowser){

            $scope.openInBrowser = function(extUrl){

                $ionicPlatform.ready(function() {
                    var options = {
                        location: 'yes',
                        clearcache: 'yes',
                        toolbar: 'yes'
                      };

                    $cordovaInAppBrowser.open(extUrl, '_system', options)
                    .then(function(event) {
                      // success
                    })
                    .catch(function(event) {
                      // error
                    });               

                }); // $ionicPlatform.ready
            };//--------------------------------------
        }]);

【讨论】:

  • 使用您的代码时出现此错误:错误:[$parse:syntax] 语法错误:令牌':'是意外的,在列中期望 [)]... 知道这是为什么吗?
  • 听起来像一个 AngularJS 错误,你的页面有一个空的控制器工作吗?如果是,则从那里开始,然后在控制器中从上面的代码中添加。
  • 我已经能够弄清楚错误发生的原因。恰好是 ng-click 函数中的 extUrl 参数有问题。一开始我把它写成 {{vacature.url}}。但它应该是'{{vacature.url}},现在它可以工作了!在声明应该如何打开 URL 之后使用选项也有问题,所以我把它省略了,现在一切正常:)
【解决方案2】:

我知道为什么我的网址在单击按钮时没有打开。这是我现在用来让它正常工作的代码。

这是按钮:

<button class="button button-full button-assertive" ng-click="openUrl('{{vacature.url}}')"> Sollicitatielink </button>

这是函数:

$scope.openUrl = function(extUrl) {

    window.open(extUrl, '_system');

};

编辑

由于这段代码,JSON HTML 数据中的 URL 现在可以正常工作:

<a href="url_here" target="_blank">via our website.</a>

现在改成这样了:

<a href="" onclick="window.open('url_here', '_system')">via our website.</a>

现在 Ionic 应用程序中的所有 href 都可以使用了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2018-08-14
    • 2017-08-21
    • 2018-09-09
    • 1970-01-01
    • 2022-01-16
    • 2018-07-10
    相关资源
    最近更新 更多