libreria ejemplos compiling jquery ios html5 browser

ejemplos - jquery mobile compiling



¿Cuál es la diferencia entre<a href=venturarse> y window.location=“url” en iOS? (7)

Con la función JS window.location el navegador desea abrir el archivo con el navegador y no con ningún otro programa. Pero con la etiqueta A se vincula a algo. Esto puede ser cualquier archivo. Si el navegador no conoce el tipo de archivo, el navegador alerta una ventana emergente para descargar el archivo. Si el archivo es, por ejemplo, un archivo HTML, el navegador abre el archivo y lo muestra.

Para descargar un archivo con JS aquí hay un link .

Tengo una aplicación HTML 5 que se ejecuta en dispositivos móviles, incluido el iPad. Quiero crear un enlace a un archivo que no sea HTML y tener abierta la aplicación adecuada para manejar el archivo. Los archivos son archivos .acsm, que se abrirán en Bluefire.

Si creo el enlace como una simple etiqueta <a href="url"> , funciona.

Si, por el contrario, utilizo Javascript para establecer la window.location , no funciona. El iPad muestra una alerta que dice "Error en la descarga: este archivo no se puede descargar".

He experimentado con otros tipos de archivos y no he encontrado nada concluyente. ¿Cuál es la diferencia entre el enlace simple y la técnica de Javascript? ¿Puedo hacer que el código Javascript haga lo mismo que el enlace?

En caso de que los detalles específicos de Javascript importen, lo hago así con jQuery:

$(''.native-launch'').live(''click'', function (evobj) { var there = $(evobj.target).attr(''href''); window.location.href = there; return false; });

y el HTML se ve como:

<span class="catalog-list-button native-launch" href="url">Read in another app</span>

(Tenga en cuenta que este es un lapso con un href, puedo cambiar el HTML si eso ayudara).


De acuerdo con la especificación HTML5 , el elemento span solo puede tener los atributos globales , que no incluyen href . Por lo tanto, el valor obtenido del atributo puede tener un formato incorrecto o ser incompatible con el tipo aceptado por window.location.href . No estoy seguro de si esto podría estar relacionado con el problema.

¿Intentó asignar una cadena constante como window.location.href = "http://example.com/file" ?


Me parece un error de Safari. Si escribe window.location: Safari está esperando un archivo html o cualquier tipo de archivo que pueda mostrar.

Mientras que al hacer clic en un enlace, lee el tipo de contenido y luego decide abrirlo en la misma ventana o abrir una aplicación para él.

Creo que deberías intentar abrir una ventana emergente con la url. En teoría debería funcionar.


Pensaría que un enlace era mejor en caso de que algún tipo de lector de pantalla estuviera tratando de analizar su página. Si su navegación estuviera en javascript, algo así no le diría a los usuarios con discapacidades visuales lo que está pasando.

Por cierto, en lugar de return false; desde su gestor de eventos. No evobj.preventDefault() , es la forma preferida de dejar de hacer burbujas para el evento.


Pruebe window.open , pasando "_self" como nombre de la ventana de destino.

window.open(there, "_self");

El uso de "_self" es la parte crítica aquí, de lo contrario el bloqueador de ventanas emergentes lo interceptaría. Probaría esto, pero no tengo un enlace a un archivo acsm.

Edición: Dos ideas más:

Agregue un formulario a su página con un método de "GET" y una acción de su archivo acsm. Excluya los campos de formulario a menos que se asignen adecuadamente a su URL.

<form id="acsm" method="GET" action="http://myserver.com/myfile.acsm"></form>

Luego simplemente envíe su formulario con form.submit() :

document.forms.acsm.submit();

Y la otra idea: crear una página en su servidor que haga una redirección del lado del servidor a su archivo acsm. Luego simplemente use la location.href = url habitual.href location.href = url para esa página del servidor.


Si se trata de un error con iOS, simule un clic en un enlace. A diferencia de la solución de memical, esto no burbujeará:

var a = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); a.href = your_url_here; var click = document.createEvent("Event"); click.initEvent("click", false /*bubbles*/, true /*cancellable*/); a.dispatchEvent(click);


crea una nueva etiqueta y haz clic en ella usando jquery:

$("<a />").attr("href", there).click();

la etiqueta a en este caso no se agregará a DOM, solo se utilizará para simular el clic.