117 votes

phonegap ouvrir le lien dans un navigateur

<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>

hey les experts, je suis en utilisant phonegap 2.9.0 et je suis en utilisant le code ci-dessus pour ouvrir le lien dans le navigateur, mais il l'ouvre dans la même application...... comment faire pour ouvrir le navigateur safari?

il ouvre le site internet dans la même application et puis je ne suis pas en mesure de revenir à l'application, donc j'ai besoin de supprimer l'application et l'installer de nouveau.....

226voto

freejosh Points 6034

Comme suggéré dans une question similaire, l'utilisation de JavaScript pour appeler window.open avec l' target argument défini à l' _system, selon les InAppBrowser de la documentation:

<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>

Cela devrait fonctionner, mais une meilleure et plus flexible, la solution consisterait à intercepter tous les liens' click événements, et appelez - window.open avec des arguments de lire à partir du lien ses attributs.

Rappelez-vous que vous devez installer le InAppBrowser plugin pour que cela fonctionne:

cordova plugin add org.apache.cordova.inappbrowser

31voto

krzychu Points 595

Comme répondu dans d'autres posts, vous disposez de 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 suis la vérification de la plate-forme et selon que je suis en utilisant une méthode différente. Dans le cas d'un navigateur standard, je laisse la norme de comportement. À partir de maintenant sur la solution fonctionnera très bien sur Android, iOS et dans un navigateur, tandis que la page HTML ne seront pas modifiées, de sorte qu'il peut avoir des URLs représenté en tant que norme d'ancrage

<a href="http://stackoverflow.com">

La solution nécessite InAppBrowser de Périphérique et des plugins

29voto

user2758937 Points 149
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>

Fonctionne pour moi avec android & PG 3.0

21voto

Hassan Siddique Points 333

Il y a 2 façons d'ouvrir l'URL dans android et iphone.

POUR IOS, utilisez le code suivant.

window.open("http://google.com", '_system');

et pour android OS utilisez le code suivant.

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

11voto

mytharcher Points 148

Enfin ce post m'aide sur iOS: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/.

Ouvrir "CDVwebviewDelegate.m" fichiers et de recherche "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;
}

Tout en utilisant navigator.app.loadUrl("http://google.com", {openExternal : true}); pour Android est OK.

Par Cordova 3.3.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X