Phonegap Build CLI-5.2.0 Descargar y cerrar desde dentro de la aplicación Web

He estado luchando con hacer llamadas a la ventana abierta, usando inappbrowser desde mi aplicación. Básicamente, estoy usando phonegap como un envoltorio para cargar un sitio web de CMS móvil con funciones especiales de aplicación.

Aquí está el index.html. Estoy utilizando inappbrowser (con la ubicación establecida en no).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Emerald Test App</title> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width" /> <script src="phonegap.js"></script> <script type='text/javascript'> var ref = null; function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { var url = 'https://my-cms-site.com/content.aspx?page_id=31&org_id=1&app=1'; var target = '_blank'; var options = "location=no" ref = cordova.InAppBrowser.open(url, target, options); } </script> </head> <body onload="onLoad()"> </body> </html> 

Lo que estoy buscando hacer, es los enlaces abiertos en un navegador del sistema – desde mi sitio externo cargado a través de inappbrowser

He intentado descargar archivos usando documentación y sugerencias similares de mensajes como

 <script type="text/javascript"> window.open(url, '_system'); </script> 

Y _blank, y añadiendo 'location = no', etc, pero no hay dados. Estas son páginas externas, cargadas desde mi sitio remoto.

Cuando se hace clic en estos vínculos, se abren en el mismo navegador (inappabrowser o webview) y controlan el navegador. Lo que estoy tratando de hacer es abrir estos en otro navegador del sistema (cromo, safari, lo que sea). Esto se encargaría de mi problema de descarga (como los archivos esperamos abrir en el navegador del sistema y el usuario puede averiguar qué hacer con ellos).

He intentado agregar un detector de eventos y executescript para devolver un valor del href. Luego use ese valor para window.open (href, '_ system'); Desde el index.html (en lugar de la página remota). Porque en el índice, todavía tendré la referencia a inappbrowser.

  ref.addEventListener( "loadstop", function() { ref.executeScript( { code: "var gbal = null; $('a').on('click', function() { gbal = $(this).attr('href'); }); (function runIt() { return gbal })();" }, function( values ) { if (values != null) { //alert( values[ 0 ] ); window.open(values[0],'_system'); } } ); }); } 

Los valores [0] siempre son nulos. Lo que parece indicar que no estoy haciendo algo correctamente en el código: porción de executescript – o $ (esto) no es realmente esto

Por lo tanto, gran pregunta – ¿cómo puedo abrir los enlaces en mi sitio externo en un navegador del sistema. Window.open ('whatever.htm', '_XXXXX') no hace ninguna diferencia cuando se llama a mi sitio remoto. ¿Estoy en el camino correcto usando un detector de eventos?

One Solution collect form web for “Phonegap Build CLI-5.2.0 Descargar y cerrar desde dentro de la aplicación Web”

Responder a mi propia pregunta aquí para que cualquier persona que se enfrenta a una situación similar puede obtener una respuesta sólida. He reconstruido esto juntos de otros postes, referencias y documentación.

¿Así que quieres abrir un enlace a un navegador externo, en un sitio remoto cargado en InAppBrowser?

En su sitio remoto, deberá incluir un script src en su archivo cordova.js, su archivo cordova_plugins.js e incluir su carpeta de plugins. Estos archivos deben estar alojados en su sitio remoto. Estoy eligiendo cargar la mina condicionalmente si sé que es la "aplicación". Los archivos cordova cuando se cargan lanzará una serie de alertas, por lo que no querrá cargar estos a menos que sepa que es la aplicación.

Introduzca aquí la descripción de la imagen

¿De dónde sacas estos archivos? Instalé Phonegap Desktop y usé los archivos de la compilación, pero tuve algunos errores de referencia. En cambio, utilicé Phonegap Build y extraje los archivos del APK. Renombrado appname.apk a appname.apk.zip y extraído / copiado los archivos js necesarios a mi servidor. * Existen algunos problemas con las diferencias de plataforma, y ​​el archivo cordova.js tendrá que ser alterado y cargado condicionalmente para iOS / Android.

Estos son necesarios para que usted tenga identificadores para el inappbrowser (y en el caso de mi "cerrar la aplicación" requisito – navegador ).

En mi sitio remoto (externo) (después de haber cargado el cordova / plugins) ahora puedo cerrar la aplicación con una simple llamada a navigator.app.exitApp ();

En las páginas de mi sitio remoto (externo) cargado en inappbrowser, ahora puedo abrir enlaces en páginas externas haciendo algo como esto:

 <a onclick="loadUrl('http://google.com'); return false;" href="#">Test link, don't click</a> <script type="text/javascript"> $('.closeapp').click(function() { navigator.app.exitApp(); //this only works on Android. iOS doesn't allow for programmatic exit }); function loadUrl(url){ navigator.app.loadUrl(url, { openExternal:true }); return false; } </script> 

Planeo modificar un poco la función loadURL usando jquery, para ser manejado al hacer clic y buscar una clase. Algo como:

 $('.downloadable').click(function() { var url = $(this).attr('href'); navigator.app.loadUrl(url, { openExternal:true }); }); 

Lo anterior solo funciona para Android. Intentar una window.open vainilla (' http://www.whatever.com ', '_system') no abre un navegador externo en iOS desde mi sitio externo. Pensé en usar otro ref = cordova.inappbrowser.open () desde dentro de mi sitio externo? Eso no funciona. ¿Alguien tiene alguna idea?

  • Phonegap - actualizar a 3.0 problemas con funciones de API
  • La captura de video de Phonegap se bloquea
  • ¿Hay una alternativa a getUserMedia para Phonegap Android (local)?
  • Mejora de Cordova PhoneGap a 5.1.1 desde 2.2.0
  • Plugin de geolocalización de Phonegap no agrega para android
  • gap_init llamado de origen restringido
  • Concatenar y minify los archivos del plugin cordova / phonegap
  • PhoneGap BarcodeScanner - ClassNotFound
  • Cordova error (ERROR construyendo una de las plataformas)
  • ¿Cómo usar Phonegap SoftKeyboard Plugin para Android?
  • Error en la aplicación Phonegap: módulo no capturado cordova / plugin_list ya definido
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.