www.kidzout.com
hey experts j’utilise phonegap 2.9.0 et j’utilise le code ci-dessus pour ouvrir le lien dans le navigateur, mais il ouvre dans la même application …… comment l’ouvrir navigateur Safari?
il ouvre le site Web dans la même application et je ne peux pas revenir à l’application, je dois donc supprimer l’application et l’installer à nouveau …..
Comme suggéré dans une question similaire , utilisez JavaScript pour appeler window.open
avec l’argument target
défini sur _system
, conformément à la documentation InAppBrowser :
www.kidzout.com
Cela devrait fonctionner, bien qu’une solution meilleure et plus flexible consisterait à intercepter tous les événements de click
des liens et à appeler window.open
avec des arguments lus à partir des atsortingbuts du lien.
Rappelez-vous que vous devez installer le plug-in InAppBrowser pour que cela fonctionne:
cordova plugin add cordova-plugin-inappbrowser
Link
Fonctionne pour moi avec Android & PG 3.0
Comme répondu dans d’autres articles, vous avez deux options différentes pour différentes plates-formes. Ce que je fais c’est:
document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady() { // Mock device.platform property if not available if (!window.device) { window.device = { platform: 'Browser' }; } handleExternalURLs(); } function handleExternalURLs() { // Handle click events for all external URLs if (device.platform.toUpperCase() === 'ANDROID') { $(document).on('click', 'a[href^="http"]', function (e) { var url = $(this).attr('href'); navigator.app.loadUrl(url, { openExternal: true }); e.preventDefault(); }); } else if (device.platform.toUpperCase() === 'IOS') { $(document).on('click', 'a[href^="http"]', function (e) { var url = $(this).attr('href'); window.open(url, '_system'); e.preventDefault(); }); } else { // Leave standard behaviour } }
Donc, comme vous pouvez le voir, je vérifie la plate-forme de l’appareil et, en fonction de cela, j’utilise une méthode différente. Dans le cas d’un navigateur standard, je quitte le comportement standard. A partir de maintenant, la solution fonctionnera correctement sur Android, iOS et dans un navigateur, tandis que la page HTML ne sera pas modifiée, de sorte que les URL puissent être représentées comme ancre standard
La solution nécessite des plugins InAppBrowser et Device
Il y a 2 manières différentes d’ouvrir l’URL dans android et iphone.
POUR IOS utiliser le code suivant.
window.open("http://google.com", '_system');
et pour Android OS utiliser le code suivant.
navigator.app.loadUrl("http://google.com", {openExternal : true});
Enfin, cet article m’aide sur iOS: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/ .
Ouvrez le fichier “CDVwebviewDelegate.m” et recherchez “shouldStartLoadWithRequest”, puis ajoutez ce code au début de la fonction:
if([[NSSsortingng ssortingngWithFormat:@"%@",request.URL] rangeOfSsortingng:@"file"].location== NSNotFound) { [[UIApplication sharedApplication] openURL:[request URL]]; return NO; }
Lors de l’utilisation de navigator.app.loadUrl("http://google.com", {openExternal : true});
pour Android, c’est OK.
Via Cordova 3.3.0.
Si vous avez jQuery, vous pouvez intercepter le clic sur le lien comme ceci:
$(document).on('click', 'a', function (event) { event.preventDefault(); window.open($(this).attr('href'), '_system'); return false; });
De cette façon, vous n’avez pas à modifier les liens dans le fichier HTML, ce qui permet de gagner beaucoup de temps. Je l’ai configuré en utilisant un délégué, c’est pourquoi vous voyez qu’il est lié à l’object document, avec la balise ‘a’ comme second argument. De cette manière, toutes les balises ‘a’ seront traitées, indépendamment du moment où elles sont ajoutées.
Bien sûr, vous devez toujours installer le plug-in InAppBrowser:
cordova plugin add org.apache.cordova.inappbrowser
Aucune de ces réponses n’est suffisamment explicite pour permettre l’ouverture de liens externes dans chaque plate-forme. Selon les documents inAppBrowser :
Installer
cordova plugin add cordova-plugin-inappbrowser
Ecraser window.open (facultatif, mais recommandé pour plus de simplicité)
window.open = cordova.InAppBrowser.open;
Si vous window.open
pas window.open
, vous utiliserez la fonction native window.open
, et vous ne pourrez pas espérer obtenir les mêmes résultats sur plusieurs plateformes.
Utilisez-le pour ouvrir des liens dans le navigateur par défaut
window.open(your_href_value, '_system');
Notez que la cible pour inAppBrowser (qui est le nom du plugin pour lequel elle doit être utilisée) est '_blank'
, au lieu de '_system'
.
Sans les étapes ci-dessus, je n’ai pas été en mesure de faire en sorte que les liens s’ouvrent dans la multiplateforme de l’application de navigateur par défaut.
Voici un exemple de gestionnaire de clics (en direct) pour les liens:
document.addEventListener('click', function (e) { if (e.target.tagName === 'A' && e.target.href.match(/^https?:\/\//)) { e.preventDefault(); window.open(e.target.href, '_system'); } });
window.open('http://www.kidzout.com', '_system');
Cela fonctionnera mais seulement si le plugin inappbrowser est installé. Pour installer, à l’aide du terminal, accédez au dossier www de votre projet et tapez:
phonegap plugin add org.apache.cordova.inappbrowser
ou
cordova plugin add org.apache.cordova.inappbrowser
Ensuite, votre lien s’ouvrira dans le navigateur.
Avec Cordova 5.0 et versions ultérieures, le plug-in InAppBrowser est renommé dans le registre du plug-in Cordova, vous devez donc l’installer en utilisant
cordova plugin add cordova-plugin-inappbrowser --save
Puis utilisez
J’utilise PhoneGap Build (v3.4.0), en mettant l’accent sur iOS, et je devais avoir cette entrée dans mon config.xml pour que PhoneGap reconnaisse le plug-in InAppBrowser.
Après cela, utiliser window.open (url, target) devrait fonctionner comme prévu, comme indiqué ici .
J’ai également rencontré le problème que le lien ne s’ouvrait pas sur le navigateur voici mon correctif avec les étapes:
1: Installez ce plugin Cordova.
cordova plugin add cordova-plugin-inappbrowser
2: append le lien ouvert dans le HTML comme suit.
Google
3: c’est l’étape la plus importante car j’ai rencontré beaucoup de problèmes: téléchargez le fichier cordova.js
et collez-le dans le dossier www
. Faites ensuite une référence de ceci dans le fichier index.html
.
Cette solution fonctionnera pour l’environnement android et l’iPhone.