2013-08-23 9 views

risposta

8

finalmente riusciti a farlo funzionare con una "soluzione" che non è una soluzione generica, come ho inizialmente sperato:

Sto usando il fatto che il link che sto cercando di aprire uno schema URL personalizzato (ad es. myxx: // localhost) su dispositivi mobili, e se fallisce, l'azione che voglio eseguire è un reindirizzamento verso un URL appstore standard (specifico per OS). La soluzione tenta di aprire l'URL personalizzato, e se fallisce, la funzione di timeout calci, poco dopo, e si apre un URL alternativo:

setTimeout(function() { window.location=alternateUrl; }, 25); 
window.location = customUrl; 

Il rovescio della medaglia è che quando il CustomURL fallisce, un browser Safari normale mostra un messaggio che il sito non può essere aperto, ma almeno reindirizza ancora l'utente all'appstore.

+2

non funziona per Android – someUser

3

Non proprio possibile, perché quando viene eseguito window.location = someURL, prima che l'URL sia anche testato, il documento viene rimosso dalla finestra. Non hai codice rimanente che possa verificare se ha funzionato.

Se il collegamento è sulla stessa origine, è possibile emettere un XMLHttpRequest per verificare se la pagina è raggiungibile ma non sembra essere un modo per verificare se una pagina non è richiesta solo a causa della richiesta di origine incrociata o perché l'URL è sbagliato.

Per un documento generale, non conosco alcun modo per verificare se una pagina di origine straniera è raggiungibile (ma può essere eseguita per un'immagine utilizzando il gestore di eventi onload).

+0

Ho provato con XMLHttpRequest, ma l'URL non è nello stesso dominio, quindi non funziona ... –

+1

@sagimann È possibile configurare un'applicazione server che è possibile chiamare dalla propria app per controllarla. In questo modo non colpirai un errore di origine incrociata. –

+0

Sì, non è proprio la risposta a "come farlo in javascript", ma è davvero la soluzione più ragionevole. –

1

è possibile verificare se la pagina esiste utilizzando ajax. non ha testato il codice, ma dovrebbe funzionare.

var rekuest= new XMLHttpRequest(); 
rekuest.open('GET', 'http://www.thisdoesnotexits.org', true); 
rekuest.send(); 
if (rekuest.status === "404") {alert("not exist!"); }