Les liens ne s'ouvrent pas dans un navigateur externe dans JQuery Mobile avec PhoneGap
Je vais avoir un problème dans PhoneGap 2.3.0 avec JQuery Mobile 1.2.0.
Un lien externe iniOS s'ouvre à l'intérieur de l'application au lieu de l'ouvrir Safari, ils ouvrent à l'intérieur de l'application, rendant impossible pour l'utilisateur de revenir à l'application, sans avoir à redémarrer.
J'ai essayé les deux et target="_blank" de les indiquer est un lien externe, mais aucun avec succès.
J'ai vu que la méthode par défaut que PhoneGap avec JQMobile devraient loi est la façon dont je le veux. J'ai trouvé beaucoup de demandes pour ce genre de comportement, mais pas de la manière autour.
source d'informationauteur Gus Fune | 2013-02-07
Vous devez vous connecter pour publier un commentaire.
J'ai ajouté
à mon ancre des liens.
Puis ajout/surdéfini la
shouldStartLoadWithRequest
méthode dans leMainViewController
classe:Qui fonctionne pour moi en jQuery Mobile 1.2 et Phonegap 2.2.0. Il devrait fonctionner de la même dans Phonegap 2.3.0 - mais je n'ai pas testé.
==================================================================================
Mise à JOUR:
Il n'y a aucun besoin de le faire dans Phonegap 2.7.0 ou au-dessus. Phonegap pouvez maintenant ouvrir les liens dans la UIWebView, Safari ou la InAppBrowser composant. Personnellement, j'aime la InAppBrowser composant, comme il semble être une meilleure expérience utilisateur pour un grand nombre de cas d'utilisation. Si vous voulez ouvrir un lien dans Safari, vous pouvez désormais le faire maintenant, à l'aide de Javascript:
ou ce pour la InAppBrowser:
Jetez un oeil ici pour plus d'informations:
http://wiki.apache.org/cordova/InAppBrowser
http://docs.phonegap.com/en/2.7.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser
Si vous ne voulez pas surcharger les classes ou de creuser trop profond dans le code, comme l'a suggéré, essayez ceci. Il a travaillé comme un charme pour moi. Je suis l'aide de Phonegap Build et jQuery Mobile.
*Remarque - j'ai essayé plusieurs autres façons d'ajouter des attributs directement à l'ancre des balises par exemple
<a href="http://externalsite.com target="_blank" data- data-ajax="false">
aussi essayétarget="_system
- mais aucun n'a fonctionné, j'ai donc dû utiliser du javascript (5 lignes).Il n'est pas trop compliqué, mais je vais vous guider à travers elle...
Vous avez besoin pour prévenir le comportement par défaut de la balise d'ancrage. Donc, quelque part, s'accrocher à l'une des balises que vous vous souciez. J'ai ajouté une classe appelée "externe" à toutes les balises d'ancrage, je voulais ouvrir de l'extérieur. Les choses assez standard:
Prenez ensuite la
href
valeur de l'ancre que vous essayez de charger dans safari. Encore une fois, rien de trop de fantaisie ajoutée ici:C'était le peu qui a eu à creuser - je suppose que Phonegap changé leur méthode sur ce avec la 2.3? De toute façon, ouvrez le attrapé
href
dans une nouvelle fenêtre (c'est là que"_system"
vient):Que c'est. Le dernier morceau de code est tout. Au moins, c'est ce qui a fonctionné pour moi.
Bonne chance!
(Pour donner du crédit lorsque le crédit est dû, ici, c'est ce qui m'a le plus aidée: http://www.midnightryder.com/launching-external-urls-in-phonegap-again-phonegap-2-4-x/)
La même solution que @KyleSimmons, mais seulement en ligne, et de plus courte durée. mais un simple correctif. Et fonctionne très bien pour moi.
Pour ouvrir un lien externe à jQuery Mobile: