open online inapp example debug compile appinbrowser html5 cordova

html5 - online - phonegap build ios



phonegap open link en el navegador (11)

Como se respondió en otras publicaciones, tienes dos opciones diferentes para diferentes plataformas. Lo que hago es:

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 } }

Entonces, como pueden ver, estoy revisando la plataforma del dispositivo y, dependiendo de eso, estoy usando un método diferente. En el caso de un navegador estándar, dejo el comportamiento estándar. De ahora en adelante, la solución funcionará bien en Android, iOS y en un navegador, mientras que la página HTML no se modificará, por lo que puede tener URLs representadas como ancla estándar.

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

La solución requiere InAppBrowser y complementos del dispositivo

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

hey expertos estoy usando phonegap 2.9.0 y estoy usando el código anterior para abrir el enlace en el navegador pero lo abre en la misma aplicación ... ¿cómo abrirlo en el navegador safari?

abre el sitio web en la misma aplicación y luego no puedo volver a la aplicación, así que necesito eliminar la aplicación e instalarla de nuevo .....


Como se sugiere en una pregunta similar , use JavaScript para llamar a window.open con el argumento de target establecido en _system , según la documentación de InAppBrowser :

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

Esto debería funcionar, aunque una solución mejor y más flexible sería interceptar todos los eventos de click los enlaces y llamar a window.open con argumentos leídos de los atributos del enlace.

Recuerde que debe instalar el complemento InAppBrowser para que esto funcione:

cordova plugin add cordova-plugin-inappbrowser


Con Cordova 5.0 y superior, el complemento InAppBrowser cambia de nombre en el registro de complementos de Cordova, por lo que debe instalarlo usando

cordova plugin add cordova-plugin-inappbrowser --save

Entonces usa

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


Estoy usando PhoneGap Build (v3.4.0), con foco en iOS, y necesitaba tener esta entrada en mi config.xml para que PhoneGap reconozca el complemento InAppBrowser.

<gap:plugin name="org.apache.cordova.inappbrowser" />

Después de eso, usar window.open (url, target) debería funcionar como se espera, como se documenta here .


Hay 2 formas diferentes de abrir la URL en Android y iPhone.

PARA IOS use el siguiente código.

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

y para el uso de Android OS siguiendo el código.

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


Ninguna de estas respuestas es lo suficientemente explícita como para abrir enlaces externos en cada plataforma. De acuerdo con los documentos de inAppBrowser :

Instalar

cordova plugin add cordova-plugin-inappbrowser

Sobrescribir window.open (opcional, pero recomendado para simplificar)

window.open = cordova.InAppBrowser.open;

Si no sobrescribe window.open , utilizará la función window.open nativa y no podrá obtener los mismos resultados multiplataforma.

Úselo para abrir enlaces en el navegador predeterminado

window.open(your_href_value, ''_system'');

Tenga en cuenta que el destino para el inAppBrowser (que es el nombre de complemento que se debe usar) es ''_blank'' , en lugar de ''_system'' .

Sin los pasos anteriores, no pude obtener enlaces para abrir en la aplicación de navegador predeterminada multiplataforma.

Crédito adicional

Aquí hay un controlador de clic de ejemplo (en vivo) para los enlaces:

document.addEventListener(''click'', function (e) { if (e.target.tagName === ''A'' && e.target.href.match(/^https?://///)) { e.preventDefault(); window.open(e.target.href, ''_system''); } });


Por fin, esta publicación me ayuda en iOS: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/ .

Abra el archivo "CDVwebviewDelegate.m" y busque "shouldStartLoadWithRequest", luego agregue este código al comienzo de la función:

if([[NSString stringWithFormat:@"%@",request.URL] rangeOfString:@"file"].location== NSNotFound) { [[UIApplication sharedApplication] openURL:[request URL]]; return NO; }

Al utilizar navigator.app.loadUrl("http://google.com", {openExternal : true}); para Android está bien.

Via Cordova 3.3.0.


Si tiene jQuery, puede interceptar el clic en el enlace de esta manera:

$(document).on(''click'', ''a'', function (event) { event.preventDefault(); window.open($(this).attr(''href''), ''_system''); return false; });

De esta manera, no tiene que modificar los enlaces en el html, lo que puede ahorrar mucho tiempo. Lo configuré usando un delegado, por eso lo veo vinculado al objeto del documento, con la etiqueta ''a'' como segundo argumento. De esta forma se manejarán todas las etiquetas ''a'', independientemente de cuándo se agreguen.

Por supuesto, usted todavía tiene que instalar el complemento InAppBrowser:

cordova plugin add org.apache.cordova.inappbrowser


También me enfrenté al problema que el enlace no se abría en el navegador aquí es mi solución con los pasos:

1: Instalar este complemento cordova.

cordova plugin add cordova-plugin-inappbrowser

2: agregue el enlace abierto en el html como sigue.

<a href="#" onclick="window.open(''https://www.google.com/'', ''_system'', ''location=yes'');" >Google</a>

3: este es el paso más importante debido a esto me enfrenté a un montón de problemas: descargue el archivo cordova.js y péguelo en la carpeta www . Luego haz una referencia de esto en el archivo index.html .

<script src="cordova.js"></script>

Esta solución funcionará tanto para el medio ambiente, Android y iPhone.


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

Funciona para mí con Android y PG 3.0


window.open(''http://www.kidzout.com'', ''_system'');

Funcionará pero solo si tiene instalado el complemento inappbrowser. Para instalar, usando terminal, busque la carpeta www en su proyecto y escriba:

phonegap plugin add org.apache.cordova.inappbrowser

o

cordova plugin add org.apache.cordova.inappbrowser

Luego, su enlace se abrirá en el navegador.