come faccio a verificare se una chiamata a window.location non è riuscita perché l'URL specificato non è valido, ecc.? C'è qualche evento che posso impostare sull'oggetto della finestra o su qualche altro oggetto che possa catturarlo?come posso rilevare se window.location non è riuscito?
risposta
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.
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
).
Ho provato con XMLHttpRequest, ma l'URL non è nello stesso dominio, quindi non funziona ... –
@sagimann È possibile configurare un'applicazione server che è possibile chiamare dalla propria app per controllarla. In questo modo non colpirai un errore di origine incrociata. –
Sì, non è proprio la risposta a "come farlo in javascript", ma è davvero la soluzione più ragionevole. –
è 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!"); }
non funziona per Android – someUser