scrolling prevent lock body javascript modal-dialog mobile-safari function-overriding

javascript - prevent - ¿Cómo se anula el evento de error window.location?



prevent body scrolling ios (2)

El problema general

En Javascript, necesito que se me notifique cuando se produce un error al cargar una URL y anular el comportamiento predeterminado. Por ejemplo, ejecutando lo siguiente en iOS Safari ...

window.location = ''http://pageDoesNotExist.badFormatting'';

... aparecerá este mensaje de alerta ...

Me gustaría adjuntar a un oyente por tal error y hacer algo en lugar de mostrar un cuadro de alerta feo.

Mi problema especifico

Cuando un usuario toca un botón, necesito iniciar mi aplicación si está instalada, de lo contrario, necesito abrir la App Store para que ella descargue mi aplicación. La solución aceptada es:

// Attempt to open app window.location = ''myApp://''; // If app fails to open, will open app store 0.5 seconds later window.setTimeout( function() { window.location = ''http://itunes.apple.com/myAppId''; }, 500 );

El problema aquí es que la primera window.location la window.location abre el cuadro de alerta feo cuando la aplicación no está instalada. El código luego retrocederá a la App Store. Cuando el usuario regresa de la tienda de aplicaciones a Safari, el cuadro de alerta feo todavía está allí. Por lo que sé, window.onerror no dispara en Safari móvil.


Agregue un object con el atributo width="0" a la marca, use la URL de la página como el valor del atributo de data , luego vaya a iTunes si la URL redirige a un 404:

/* Find object element */ var hrefobj = document.querySelector("object"); /* Assign protocol string to data attribute of object element */ hrefobj.data = ''myApp://''; /* If the assignment fails */ if (hrefobj.data !== ''myApp://'') { /* Redirect the window to the fallback URL */ window.location = ''http://itunes.apple.com/myAppId''; }


Tu solución está aquí .

Básicamente, puede usar cookies para determinar si su aplicación está instalada o no.