2017-05-27 4 views
0

In meiner App habe ich eine Direktive in einem Repeater, und die Direktive zeigt den Benutzern die URLs an.Ich kann cordova inAppBrowser nicht zum Öffnen von URLs auslösen

Der Code I haben, ist der folgende:

var onDeviceReady; 

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

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

und im html

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

Wenn ich versuche, die App auf dem Android-Gerät zu öffnen, wird die Konsole Nachricht richtig gedruckt wird (was bedeutet, dass die Funktion aufgerufen werden soll), aber alle die URL Öffnung nicht an alle.

Meine Index-Datei sieht wie folgt aus (in Fall ist nützlich):

<!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> 

und die Plugins i derzeit installiert haben, sind die folgenden:

cordova-plugin-inappbrowser 1.7.1 " InAppBrowser“

cordova-plugin-Whitelist 1.3.2 "Weiße Liste"

Antwort

0

Endlich habe ich es endlich geschafft.

Grundsätzlich bin ersetzt

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

mit einer Funktion:

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

und dann die Funktion sieht wie folgt aus:

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

und es funktioniert jetzt völlig in Ordnung.

1

Das Problem ist die on-click

Sie die HTML-onclick verwenden können, oder die Winkel ng-click oder on-tap, aber on-click nicht

Auch existiert, müssen Sie für die onDeviceReady die Rückkehr nicht brauchen, aber das doesn Verhindern, dass es funktioniert.

+0

die Rückkehr ist nur, weil ich coffeescript verwende und ich es automatisch zu js umwandelte, um es hier zu veröffentlichen. Vielen Dank, ich werde es stattdessen mit ng-klicken! Danke nochmal – Nick

+0

leider funktioniert es immer noch nicht. Wenn ich onclick verwende, öffnet sich der Browser, aber die URL wird nicht von eckig nach html konvertiert, und wenn ich ng-klicke, öffnet sich der Browser überhaupt nicht. Ideen? – Nick

+0

können Sie den Link in Chrome (Remote-Debugging) untersuchen, um zu sehen, ob die URL konvertiert wird, wenn Sie ng-click verwenden? Ich nehme an, Winkelcode ist in bower.js, ist das richtig? – jcesarmobile

Verwandte Themen