web-dev-qa-db-fra.com

Les liens externes dans l'application Phonegap ne s'ouvrent pas bien

J'ai donc un projet phonegap avec Phonegap 2.9.0 et la construction avec PhonegapBuild.
J'ai des liens externes dans mon application, que je voudrais ouvrir inapp ou en utilisant le navigateur de périphérique par défaut en dehors de mon application. Je suis ok pour les deux solutions. Aujourd'hui, mon application ouvre des liens inapp mais ça passe en plein écran, pas de zoom possible, et pas de bouton pour revenir dans l'application ...
J'essaie de trouver une solution pendant des jours et je regarde le même genre de questions ici, mais rien ne va bien. 

Quelqu'un pourrait-il expliquer clairement en quoi consistent toutes ces choses et quels sont les différents choix/paramètres car je peux dire que ce n'est pas clair/facile du tout!

Q1:
Je commencerais par demander: dans le fichier config.xml, la préférence de rester dans la vue Web est obsolète maintenant pour phonegap 2.3.0, non? Donc, rien à espérer ici?

Q2: J'ai beaucoup lu et essayé beaucoup de choses sur le plugin InAppBrowser avec window.open et sur le système cible/blank/self, mais aucune différence pour moi. Je reste InApp mais inutile car pas de boutons de navigation.
Est-ce que j'ai râté quelque chose? 

plugin name="InAppBrowser" value="CDVInAppBrowser"
13
migswd

Je commencerais par demander: dans le fichier config.xml, la préférence de rester dans la vue Web est obsolète maintenant pour phonegap 2.3.0, non? Donc, rien à espérer ici?

C'est correct. Ne vous inquiétez même pas de ce paramètre si vous utilisez 2.9

J'ai lu et essayé beaucoup de choses sur le plugin InAppBrowser avec window.open et cible système/blank/self mais aucune différence pour moi. Je reste InApp mais inutile car pas de boutons de navigation. Est-ce que j'ai râté quelque chose?

J'ai eu quelques problèmes pour que cela fonctionne aussi. Leur documentation est un peu éparse et doit tout lire. Voici comment je le fais fonctionner:

  1. Assurez-vous que vous avez <script src="phonegap.js"></script> dans chacune de vos pages qui veulent utiliser inappbrowser.
  2. Vous n'avez PAS besoin d'inclure une balise de plug-in dans votre config.xml. Je suis à peu près sûr qu’environ 2,5 utilisateurs ont inclus inappbrowser dans la fonctionnalité de construction principale.
  3. Pour ouvrir un lien dans le navigateur inapp, utilisez ce javascript:

    function openURL(urlString){
        myURL = encodeURI(urlString);
        window.open(myURL, '_blank');
    }
    

    Ceci ouvrira l'URL passée dans le inappbrowser. Si vous changez window.open(myURL, '_blank'); en window.open(myURL, '_system');, l'URL transmise sera ouverte dans le navigateur du système.

  4. Enfin, les clics de votre article ressemblent à ceci:

    <a href='#' onclick='openURL("http://www.urlyouwant")/>
    

    Ou vous pouvez attacher des listiners d’événements à l’objet, mais je pense que vous avez compris.

En outre, InAppBrowser dispose de nombreux écouteurs d'événements que vous pouvez y associer. Jetez un coup d'œil à la documentation si cela vous intéresse.

Important!!!! N'oubliez pas l'étape 1!

J'espère que cela t'aides.

19
Dom

Il existe 2 manières d’ouvrir une URL dans Android et iOS.

POUR IOS, utilisez le code suivant: window.open("http://google.com", '_system');

et pour Android, utilisez le code suivant: navigator.app.loadUrl("http://google.com", {openExternal : true});

10
Hassan Siddique

La réponse de Dom fonctionne pour utiliser PhoneGap 2.9.0

CEPENDANT, comme il l'a dit, il est très important de suivre l'étape 1 J'utilise https://build.phonegap.com pour compiler mon application et j'ai utilisé <script type="text/javascript" charset="utf-8" src="cordova.js"></script> pour que cela fonctionne à la place de l'étape 1

Si tout échoue, essayez cet exemple. Il a été écrit par l'un des employés de Phone gap:

https://github.com/amirudin/pgb-inAppBrowser

3
Dessertdesert

SI Les liens externes ne s'ouvrent pas, LISEZ LA SUITE.

UPDATE: 2016-03-20 _ ​​J'ai créé un tutoriel sur ce sujet.

Tutorial: Phonegap Construire une page Web externe dans iframe avec un exemple de liste blanche

Si vous lisez ceci, vous remarquerez peut-être que cet article fait référence à 2.9.0 pour Cordova/Phonegap/Phonegap Build. 2.x est officiellement obsolète et n'est plus pris en charge. 

_ {Si vous utilisez 2.X et que vous souhaitez continuer à développer votre application, effectuez une mise à niveau.

Si vous compilez avec 3.x, 4.x ou 5.x ou mieux, lisez la suite.

Si vous googlé quelque chose comme les liens externes ne s'ouvrent pas, alors voici ce que vous devriez savoir. En septembre et octobre 2015, Cordova et Phonegap ont procédé à d'importants changements. Ces modifications sont entrées en vigueur white-listing

White-listing signifie que vous devez obligatoirement fournir au système une liste blanche des liens externes que vous prévoyez d'utiliser. Le système entier peut être déroutant. Je travaille actuellement sur un article de blog, mais jusque-là, voici ce que vous devez savoir.

Le système white-list comprend trois (3) parties

  • La liste blanche fournie dans votre config.xml
  • Le plugin de liste blanche que vous ajoutez à votre config.xml
  • CSP (Content Security Policy) qui est placé sur chaque page Web (une seule fois si vous utilisez SPA)

L'application n'est pas simple. Si vous utilisez la version 3.x, vous n'avez PAS besoin de cela. Si vous utilisez 4.x ou mieux, cela s’applique à vous. Si vous utilisez 5.x, il y a encore plus de règles qui s'appliquent. Comme je l'ai dit, je travaille sur un blog, mais cette liste blanche est tellement lourde que je dois faire passer le mot. 

Voici les liens dont vous avez besoin pour commencer.

Il y a plus d'explication ici:
Timeout AJAX Demandes Cordova 5

En outre, vous pouvez lire le numéro 10 de Principales erreurs de nouveaux développeurs pour Cordova/Phonegap

Si vous êtes courageux, vous pouvez lire mes notes * RAW * sur Cordova/Phonegap, le système de liste blanche

1
JesseMonroy650

window.open ne semble pas fonctionner à partir de méthodes de rappel. (Peut-être que c'est une restriction de navigateur?) Ce n'est peut-être pas le problème du PO mais j'espère que la connaissance aidera quelqu'un.

0
Keith