<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
hey experts j'utilise phonegap 2.9.0 et j'utilise le code ci-dessus pour ouvrir le lien dans le navigateur mais il l'ouvre dans la même application ...... comment l'ouvrir navigateur Safari?
il ouvre le site Web dans la même application et puis je ne peux pas revenir à l'application, je dois donc supprimer l'application et l'installer à nouveau .....
Comme suggéré dans ne question similaire , utilisez JavaScript pour appeler window.open
avec l'argument target
défini sur _system
, conformément à documentation InAppBrowser =:
<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>
Cela devrait fonctionner, mais une solution meilleure et plus flexible consisterait à intercepter tous les événements click
de tous les liens et à appeler window.open
avec des arguments lus à partir des attributs du lien.
N'oubliez pas que vous devez installer le plug-in InAppBrowser pour que cela fonctionne:
cordova plugin add cordova-plugin-inappbrowser
Comme indiqué 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
}
}
Comme vous pouvez le constater, je vérifie la plate-forme de l'appareil et, selon moi, j'utilise une méthode différente. Dans le cas d'un navigateur standard, je laisse le comportement standard. A partir de maintenant, la solution fonctionnera correctement sous Android, iOS et dans un navigateur, tandis que la page HTML ne sera pas modifiée, afin que les URL puissent être représentées en tant qu'ancre standard.
<a href="http://stackoverflow.com">
La solution nécessite les plug-ins InAppBrowser et Device
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>
Fonctionne pour moi avec Android & PG 3.0
Il existe 2 façons différentes d’ouvrir une URL dans Android et un iphone.
FOR 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});
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([[NSString stringWithFormat:@"%@",request.URL] rangeOfString:@"file"].location== NSNotFound) { [[UIApplication sharedApplication] openURL:[request URL]]; return NO; }
Lorsque vous utilisez navigator.app.loadUrl("http://google.com", {openExternal : true});
pour Android est OK.
Via Cordova 3.3.0.
Aucune de ces réponses n'est suffisamment explicite pour que des liens externes soient ouverts sur chaque plate-forme. Selon le inAppBrowser docs :
Installer
cordova plugin add cordova-plugin-inappbrowser
Écrase window.open (facultatif, mais recommandé pour des raisons de simplicité)
window.open = cordova.InAppBrowser.open;
Si vous n'écrasez pas window.open
, vous utiliserez la fonction native window.open
et vous ne pourrez pas obtenir les mêmes résultats sur plusieurs plates-formes.
Utilisez-le pour ouvrir des liens dans le navigateur par défaut
window.open(your_href_value, '_system');
Notez que la cible de inAppBrowser (pour laquelle le nom du plug-in suggère qu'il doit être utilisé) est '_blank'
, au lieu de '_system'
.
Sans les étapes ci-dessus, je ne pouvais pas obtenir de liens à ouvrir dans l'application de navigateur par défaut multiplate-forme.
Voici un exemple de gestionnaire de clic (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');
}
});
Si jQuery est présent, 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 code HTML, ce qui peut vous faire gagner beaucoup de temps. J'ai mis cela en place en utilisant un délégué, c'est pourquoi vous voyez qu'il est lié à l'objet document, avec la balise 'a' comme second argument. De cette façon, toutes les balises "a" seront traitées, quel que soit le moment où elles sont ajoutées.
Bien sûr, vous devez encore installer le plug-in InAppBrowser:
cordova plugin add org.Apache.cordova.inappbrowser
window.open('http://www.kidzout.com', '_system');
Cela fonctionnera, mais seulement si le plugin inappbrowser est installé. Pour installer, à l’aide de 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 supérieures, le plug-in InAppBrowser est renommé dans le registre des plug-ins Cordova. Vous devez donc l'installer à l'aide de
cordova plugin add cordova-plugin-inappbrowser --save
Puis utiliser
<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>
J'utilise PhoneGap Build (v3.4.0), avec un focus sur iOS, et j'avais besoin de cette entrée dans mon config.xml pour PhoneGap pour reconnaître le plug-in InAppBrowser.
<gap:plugin name="org.Apache.cordova.inappbrowser" />
Après cela, utiliser window.open (url, target) devrait fonctionner comme prévu, comme documenté ici .
J'ai également rencontré le problème que le lien ne s'ouvrait pas sur le navigateur, voici ma solution avec les étapes suivantes:
1: Installez ce plugin cordova.
cordova plugin add cordova-plugin-inappbrowser
2: ajoutez le lien ouvert dans le code HTML comme suit.
<a href="#" onclick="window.open('https://www.google.com/', '_system', 'location=yes');" >Google</a>
3: c’est l’étape la plus importante à cause de cela. J’ai rencontré de nombreux problèmes: téléchargez le fichier cordova.js
et collez-le dans le dossier www
. Faites ensuite référence à cela dans le fichier index.html
.
<script src="cordova.js"></script>
Cette solution fonctionnera à la fois pour l'environnement Android et pour l'iPhone.
Comme ça :
<a href="#" onclick="window.open('https://www.nbatou.com', '_system'); return false;">https://www.nbatou.com</a>