Je crée une application ionique pour Android et iOS, en utilisant du code HTML. J'essaie d'appeler un lien à partir d'un fichier json stocké sur un serveur avec un nom de champ de lien, mais window.open () ne reconnaîtra pas cela, quelqu'un peut-il aider?

<a onClick="window.open({{item.link}}, '_blank', 'location=yes')">

J'ai essayé d'utiliser les href, mais ils n'ouvrent le lien que dans un navigateur qui ne permet pas à l'utilisateur de se retirer lors du test, ils doivent quitter complètement l'application pour revenir.

Toute aide serait appréciée. Il semble que ce soit uniquement sur iOS qu'ils se produisent.

OBTENU LE TRI

<a href="{{item.link}}" onclick="window.open(this.href,'_blank',location=yes); return false;">
3
Caolán McKeown 8 mars 2016 à 17:41

4 réponses

Meilleure réponse

OBTENU LE TRI

<a href="{{item.link}}" onclick="window.open(this.href,'_blank',location=yes); return false;">
0
Caolán McKeown 14 mars 2016 à 10:48

Je ne connais pas IONIC, mais je suis quasiment sûr que Ionic utilise angularjs donc ...

Les travaux suivants pour moi!

// Suivant HTML

<div>       
    <div ng-app="sampleApp" ng-controller="MainCtrl">
         <ion-content style="display:block">
         <a href="" ng-click="openUrl(item.link)">Open in new</a>

        </ion-content>
    </div>     
</div>

Et suivant le contrôleur

var SampleApp;
(function (SampleApp) {

    var app = angular.module('sampleApp', ['ionic']);    
    app.controller('MainCtrl', function ($scope) {
        $scope.item = {
           link: 'http://example.com'
        }
        $scope.openUrl = function(url){
                  window.open(url, '_blank', 'location=yes')
        }
    });

})(SampleApp || (SampleApp = {}));

JS-Fiddle: http://jsfiddle.net/daveamit/r2c8dfhx/1/

J'espère que cela t'aides!

0
Dave Amit 8 mars 2016 à 15:02

Pour moi

<a href="{{item.url}}" onclick="window.open(this.href,'_self');">
   {{menu.title}}
</a>

Travail parfait.
'location = yes' produisait une erreur

2     001637   error    Uncaught ReferenceError: yes is not defined, http://localhost:8100/?ionicplatform=android, Line: 1

Maintenant ça marche bien.

0
S.Yadav 23 août 2016 à 10:35

Vous devez utiliser href avec target:

 <a href="{{item.link}}" target="_blank">

Selon les AngularJS docs, vous devez en fait empêcher que le lien soit disponible pour l'utilisateur avant AngularJS est chargé, comme suit:

 <a ng-href="{{item.link}}" target="_blank">

Ou, si vous voulez vraiment utiliser onclick, ajoutez "javascript:" et mettez le lien entre guillemets simples:

 <a href="#" onclick="javascript:window.open('{{item.link}}', '_blank', 'location=yes')">

Utilisez un plug-in pour forcer les liens "cibles" à s'ouvrir dans un navigateur externe

Lorsque des liens s'ouvrent dans WebView, l'utilisateur n'a aucun moyen de revenir à la vue précédente.

Cet article met en lumière ce sujet:

Heureusement, il existe un plug-in cordova.inAppBrowser qui encapsule ce hack dans un plug-in facile à ajouter. Il s'agit d'une solution beaucoup plus simple qui ne nécessite pas de piratage du code wrapper cordova WebView généré qui peut être remplacé par des mises à jour. Le plug-in permet essentiellement à window.open() d'ouvrir une nouvelle fenêtre dans le navigateur externe.

Vous pouvez ajouter ce plug-in avec:

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git

dans votre projet Cordova ou - si vous utilisez les outils Cordova de Visual Studio en l'ajoutant à partir de la page de configuration du complément Visual Studio.

Le plugin remplace essentiellement la fonction window.open() à l'intérieur du contrôle WebView et provoque ainsi l'ouverture d'une nouvelle instance du navigateur de l'appareil - sur iOS qui serait Safari.

0
trincot 8 mars 2016 à 16:00