Phonegap 2.9.0 ne pas ouvrir les liens externes dans le navigateur par défaut
Ce que j'essaie de faire c'est super simple, ouvrir un lien sur le navigateur de l'appareil, mais il est plus difficile que je le pensais.
J'ai créer le projet et ajouter ios et android plates-formes avec:
$ phonegap create project_name
$ phonegap build ios
$ phonegap build android
Que j'ai, à l'intérieur de config.xml (essayé différentes façons, aucun travaux) et "rester en webview" la valeur false.
Les seules modifications que j'ai faites dans le www/index.html fichier pour ajouter les liens, la page est y compris tous les scripts par défaut(phonegap.js, js/index.js et un appel à l'application.initialize()).
J'ai essayé tous ces liens, tous ouvert à l'intérieur de la webview:
<a href="#" onclick="window.open('http://www.google.com', '_blank', 'location=yes');">_blank</a>
<a href="#" onclick="window.open('http://www.google.com', '_system', 'location=yes');">_system</a>
<a href="#" onclick="window.open('http://www.google.com', '_system');">_system</a>
<a href="http://www.google.com" target="_blank">target _blank</a>
<a href="http://www.google.com">no target</a>
Clairement que tous les tests que j'ai fait se fait dans le simulateur ios et android émulateur.
J'ai cherché beaucoup, en tout essayé, j'ai trouvé, mais rien ne fonctionne. Merci pour toute aide
Vous devez vous connecter pour publier un commentaire.
D'avoir des liens dans un Cordova/PhoneGap Application de l'ouvrir dans le navigateur par défaut de l'appareil, vous devez vous assurer que
window.open(<url>, '_system');
sera utilisé pour y accéder. Pour ce à fait le travail -peut-être un peu contre-intuitivement - vous besoin d'activer le "InAppBrowser" plug-in.De Cordoue version 2.9.0 le "InAppBrowser" plug-in est intégré et vous n'avez qu'à assurez-vous qu'il n'est pas commenté dans Cordova est
config.xml
. À partir de la version 3.0.0, vous devez installer le plug-in par l'exécution de cette commande à partir de votre répertoire de projet:De Cordova documentation sur comment " InAppBrowser’ utilise le deuxième argument
target
dewindow.open()
dans son écrasé de mise en œuvre:cible: La cible dans lequel charger l'URL, un paramètre facultatif qui est par défaut
_self
. (Chaîne)_self
: S'ouvre dans le Cordova WebView si l'URL est dans la liste blanche, sinon il s'ouvre dans le InAppBrowser._blank
: S'ouvre dans le InAppBrowser._system
: S'ouvre dans le navigateur web.Afin de séparer les préoccupations et pour m'empêcher d'oublier d'y ajouter une
onclick
attribut à chaque<a/>
que je veux ouvrir dans le navigateur par défaut, je tiens à joindre dynamiquement le comportement via JavaScript. Ci-dessous un exemple d'utilisation de jQuery dans lequel le comportement sera également remis en place après le rechargement de la impliqués HTML via XHR. Et il va être attaché à des liens externes et, par conséquent, la prévention de l'attacher àmailto:
liens.$('a[target=_system]').click(function(){...})
<access origin="*"/> <plugin name="cordova-plugin-whitelist"/> <allow-intent href="http://*/*"/>
Voir cordova.apache.org/docs/en/latest/guide/appdev/whitelist/...J'ai aussi rencontré ce problème.
Semble que la plupart ont répondu sont exactement à l'opposé de la question, les gens généralement répondre à comment l'ouvrir dans inAppBrowser, je ne sais pas pourquoi.
Tout comme vous j'ai essayé plusieurs méthodes mais aucune ne fonctionne.
Enfin, je dois tourner à moyen natif.
Heureusement, natif de façon a pris mon seul autour de pas plus de 10 minutes c'est beaucoup plus courte que d'essayer du peuple phonegap réponses.
Dans Android,
ajouter une méthode sur votre bindings objet qui accepte une chaîne d'url et de se comporter ouvrir comportement du navigateur.
En html
Pour iOS
1. ajouter le délégué à la MainViewController.h (dans mon projet, c'est son nom)
2. ensemble MainViewController comme une webView du délégué, ajouter la ligne ci-dessous dans
- (void)webViewDidFinishLoad:(UIWebView*)theWebView{
bloc3. mettre en œuvre " - (BOOL)webView:shouldStartLoadWithRequest:navigationType:" la méthode:
Enfin, le changement html de votre appel, comme ci-dessous:
Que c'est.
Il est plus facile que je ne le pensais et le travail pour moi.
Et je pense que cela peut empêcher phonegap api de changer à nouveau dans l'avenir.
Espère que cela est également utile pour vous.
Je ne suis pas sûr de savoir si c'est toujours d'actualité, mais pour donner mon 5c: j'ai juste fait quelques reconfiguration sur mon Cordova 3.3 (pas PhoneGap Build) de l'app, et a couru dans la même question.
Vous n'avez pas vraiment besoin du plugin pour qu' - assurez-vous que vous faites le lien avec:
...que vous avez posté ET important, dans votre project/xml/config.xml
J'ai aussi le navigateur in-app désactivé:
...maintenant il fonctionne très bien encore une fois 😉
Laisser répondre,mais peut-être ça peut aider quelqu'un.
Cordova 3.3.1
J'ai eu du mal à essayer d'obtenir PhoneGap est inappbrowser de travail sur Android, mais jamais aucune chance. Avec cela étant dit, j'ai juste pris avantage d'Android est une fonctionnalité native (le sytems logiciel de navigation et le bouton de retour du terminal). J'ai commenté de la manière suivante
<access origin="*" />
dans le config.xml fichier et juste ajouté le lien:Cela a fonctionné d'une amende, le lien s'ouvre dans le navigateur de l'appareil et le bouton de retour du terminal va droit au même emplacement dans l'application de l'utilisateur. Ou plutôt de ne pas le périphérique est connecté à un réseau, le système gère également ce.
ma version iOS de l'application fonctionne très bien avec le inappbrowser.
Dans iOS (au moins avec PhoneGap 2.9) cela fonctionne
Si vous souhaitez vous connecter lien externe utiliser l'attribut rel. comme
<a href="">
et tout fonctionnera correctement.