【问题标题】:I am unable to trigger cordova inAppBrowser to open URLs我无法触发 cordova inAppBrowser 打开 URL
【发布时间】:2017-10-28 11:59:22
【问题描述】:

在我的应用程序中,我在转发器中有一个指令,该指令将 URL 显示给用户。

我的代码如下:

var onDeviceReady;

onDeviceReady = function() {
  console.log("this was called");
  return window.open = cordova.InAppBrowser.open;
};

document.addEventListener('deviceready', onDeviceReady, false);

在html中

<a href="#" on-click="window.open('{{data.url}}', '_blank', 'location=yes');">{{data.url}}</a>

当我尝试在 android 设备上打开应用程序时,控制台消息被正确打印(意味着应该调用该函数)但所有 url 根本没有打开。

我的索引文件看起来像这样(如果有用的话):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <meta http-equiv="Content-Security-Policy"
          content="default-src * gap://ready file: data:; style-src 'self' 'unsafe-inline' *; font-src 'self' data: https://fonts.gstatic.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *">
    <title></title>
    <link href="css/bower.css" rel="stylesheet" id="bower-css">
    <link href="css/style.css" rel="stylesheet" id="style-css">
</head>

<body ng-app="myApp" ng-strict-di>
   <ion-nav-view class="slide-left-right" animation="slide-left-right"></ion-nav-view>

<script src="js/bower.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/templates.js"></script>
</body>
</html>

而我目前安装的插件如下:

cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"

cordova-plugin-whitelist 1.3.2“白名单”

【问题讨论】:

    标签: android cordova inappbrowser


    【解决方案1】:

    问题是on-click

    您可以使用 html onclick,或 angular ng-clickon-tap,但 on-click 不存在

    此外,您不需要返回 onDeviceReady,但这并不妨碍它工作。

    【讨论】:

    • 返回只是因为我用的是coffeescript,我自动转成js发到这里。非常感谢,我会尝试使用 ng-click 来代替!再次感谢
    • 不幸的是,它仍然不起作用。如果我使用 onclick,浏览器会打开,但 url 不会从 angular 转换为 html,如果我使用 ng-click,浏览器根本不会打开。想法?
    • 你能检查一下Chrome中的链接(进行远程调试),看看你使用ng-click时url是否被转换?我假设 Angular 代码在 bower.js 中,对吗?
    • 是的,它是通过 ng-click 转换的。 Angular 代码在 bower.js 中,而我的代码在 app.js 中
    【解决方案2】:

    最后我终于设法让它工作了。

    基本上,我换了

    ng-click="window.open('{{data.url}}', '_blank', 'location=yes');"&gt;

    有一个功能:

    ng-click="openRUL({{data.url}})">
    

    然后函数看起来像这样:

    $scope.openURL = function (url){
      window.open(url, '_blank', 'location=yes')
    }
    

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多