web-dev-qa-db-fra.com

PhoneGap Build: comment ouvrir une URL externe dans le navigateur de l'appareil sur Android?

Les URL externes ne s'ouvrent pas dans le navigateur du système dans mon PhoneGap Android. J'utilise PhoneGap Build 2.3.0.

Selon le documentation Cordova j'ai utilisé la cible '_system':

window.open('http://www.myurl.nl', '_system');

Dans mon config.xml, j'ai:

<plugin name="InAppBrowser" value="org.Apache.cordova.InAppBrowser" />
<access Origin="*" browserOnly="true" />

Mais les liens restent ouverts dans la vue Web de mes applications.

Comment résoudre ça?

18
Joan

Ce n'est pas la réponse lorsque vous souhaitez continuer à utiliser PhoneGap Build, mais j'ai résolu le problème en configurant un environnement de développement pour Cordova (PhoneGap) sur ma machine et en compilant l'application localement. Dans Cordova 2.5.0 window.open('http://www.myurl.nl', '_system'); fonctionne parfaitement, il ouvrira le lien dans le navigateur du système.

Mon conseil est donc d'arrêter d'utiliser PhoneGap Build et de commencer à compiler votre application localement. Voici comment configurer votre environnement de développement pour Cordova >>

15
Joan

Réponse tardive, mais cela peut aider quelqu'un.

navigator.app.loadUrl('https://google.com/', { openExternal:true });

Cordova 3.3.1

14
AtanuCSE

Cette question est maintenant un peu ancienne, mais j'ai senti que cela valait la peine d'être mis à jour. Cela fonctionne désormais correctement avec PhoneGap Build lorsqu'il est utilisé avec 2.9.0.

Je l'ai compilé et testé sur Android 4.3 et iOS 6.1.3. Je n'ai pas le plugin InAppBrowser dans mon application car c'est pour ouvrir des pages dans l'application, plutôt que pour amener le navigateur natif à ouvrez-les, et je n'ai que les éléments suivants pour les balises d'accès:

<access Origin="http://127.0.0.1*"/>
<access Origin="http://phonegap.com" subdomains="true" />
7
boodle

Cela a fonctionné pour moi. Phonegap 3.1.0.

code HTML:

<a id="ext-link" href="#">Google it</a>

ou

<button id="ext-link" href="#">Google it</button>

Javascript (avec jQuery + cordova):

$("#ext-link").on("click"), function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        navigator.app.loadUrl('http://www.google.com/', {openExternal: true});
    } else {
        // Possible web browser
        window.open("http://www.google.com/", "_blank");
    }
});

J'espère que cela pourra aider.

7
George Siggouroglou

@George Siggouroglou: Ce n'est pas une bonne idée d'utiliser un identifiant pour les éléments qui apparaîtront éventuellement plus d'une fois dans un document. Au lieu de cela, sa bonne pratique pour rendre le code plus modulaire.

si vous attendez des appareils tactiles, c'est aussi un bon choix d'utiliser "tap" avant "click" car il se déclenche beaucoup plus rapidement et plus tôt qu'un clic. pour vérifier les choses tactiles, je préfère utiliser modernizr car cela rend la détection des fonctionnalités un jeu d'enfant.

L'événement tactile jQuery Mobile se déclenche après un événement tactile rapide et complet qui se produit sur un seul objet cible. C'est l'équivalent gestuel d'un événement de clic standard qui est déclenché par l'état de relâchement du geste tactile. https://api.jquerymobile.com/tap/

j'espère que cela aide quelqu'un

**html code:**

<a class="ext-link" href="#">Google it</a>

ou

<button class="ext-link" href="#">Google it</button>

Javascript (avec jQuery):

//define tap or click event type on root level (can be combined with modernizr)
iaEvent = "click";
if (typeof navigator !== "undefined" && navigator.app) {
   iaEvent = "tap";
}
$('.ext-link').each.bind(iaEvent, function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        var linktarget = this.attr("href");
        navigator.app.loadUrl(linktarget, {openExternal: true});
    } else {
        // Possible web browser
        window.open(linktarget, "_blank");
    }
});
1
mrmoree