В моем приложении у меня есть директива внутри повторителя, и директива отображает 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"

Кордова-плагин-белый список 1.3.2 "Белый список"

1
Nick 27 Май 2017 в 22:58

2 ответа

Лучший ответ

В конце концов мне удалось заставить его работать.

В основном я заменил

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

С функцией:

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

И тогда функция выглядит так:

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

И теперь работает отлично.

0
Nick 5 Июн 2017 в 07:10

Проблема в on-click

Вы можете использовать html onclick, или угловое ng-click или on-tap, но on-click не существует

Кроме того, вам не нужно возвращать onDeviceReady, но это не мешает его работе.

1
jcesarmobile 27 Май 2017 в 22:21