Sto usando javascript per passare un URL dinamico a iframe src. ma a volte l'url non esiste, come potrei rilevare l'url inesistente in anticipo, in modo da poter nascondere l'iframe che con errore 404.utilizzando javascript per rilevare se l'url esiste prima della visualizzazione in iframe
risposta
Puoi provare a fare un semplice GET sulla pagina, se ottieni un 200 indietro significa che la pagina esiste. Prova questo (usando jQuery), la funzione è la funzione di callback riuscita su un carico di pagina riuscito. Nota questo funzionerà solo sui siti all'interno del tuo dominio per prevenire XSS. Altri domini dovranno essere gestite lato server
$.get(
yourURL,
function(data, textStatus, jqXHR) {
//load the iframe here...
}
);
Use a XHR and see if it responds you a 404 or not.
var request = new XMLHttpRequest();
request.open('GET', 'http://www.mozilla.org', true);
request.onreadystatechange = function(){
if (request.readyState === 4){
if (request.status === 404) {
alert("Oh no, it does not exist!");
}
}
};
request.send();
Ma si noti che funziona solo sulla stessa origine. Per un altro host, dovrai fare use a server-side language per farlo, che dovrai capire da solo.
È possibile testare l'url tramite AJAX e leggere il codice di stato, ovvero se l'URL si trova nello stesso dominio.
Se si tratta di un dominio remoto, è possibile immettere have a server script nel proprio dominio.
A causa della mia scarsa reputazione, non ho potuto commentare la risposta di Derek 朕 會 功夫. Ho provato quel codice così com'è e non ha funzionato bene. Ci sono tre problemi sul codice di Derek 朕 會 功夫.
La prima è che il tempo di inviare la richiesta asincrona e cambiare il suo 'status' di proprietà è più lenta per eseguire l'espressione successiva - se (request.status === "404"). Quindi request.status alla fine, a causa della banda internet, rimarrà sullo stato 0 (zero) e non raggiungerà il codice subito sotto se. Risolvere il problema è semplice: cambia 'true' in 'false' sul metodo open della richiesta ajax. Ciò causerà un blocco breve (o meno) del codice (dovuto alla chiamata sincrona), ma cambierà lo stato della richiesta prima di raggiungere il test su if.
Il secondo è che lo stato è un numero intero. Utilizzando l'operatore di confronto javascript '===' stai cercando di confrontare se l'oggetto del lato sinistro è identico a quello sul lato destro. Per rendere questo lavoro ci sono due modi:
- Rimuovere le virgolette che circonda 404, rendendolo un numero intero;
- Utilizzare l'operatore javascript '==' in modo da verificare se i due oggetti sono simili.
Il terzo è che l'oggetto XMLHttpRequest funziona solo sui browser più recenti (Firefox, Chrome e IE7 +). Se si desidera che frammento di lavorare su tutti i browser che devi fare in modo W3Schools suggerisce: w3schools ajax
Il codice che davvero lavorato per me era:
var request;
if(window.XMLHttpRequest)
request = new XMLHttpRequest();
else
request = new ActiveXObject("Microsoft.XMLHTTP");
request.open('GET', 'http://www.mozilla.org', false);
request.send(); // there will be a 'pause' here until the response to come.
// the object request will be actually modified
if (request.status === 404) {
alert("The page you are trying to reach is not available.");
}
più 1 a causa della tua bassa reputazione. (e l'ottima risposta :)) – silver
NO NO NO. Si prega di non collegare nulla con W3C alle scuole W3. Non sono affiliati in QUALSIASI MODO. – IE5Master
Basta notare che: XMLHttpRequest sincrono sul thread principale è deprecato a causa dei suoi effetti negativi sull'esperienza dell'utente finale. Per ulteriori informazioni, consultare https://xhr.spec.whatwg.org/. – Aus
ho trovato questo ha giocato a mio scenario.
I metodi di callback jqXHR.success(), jqXHR.error() e jqXHR.complete() introdotti in jQuery 1.5 sono deprecati da jQuery 1.8. Per preparare il codice per la loro eventuale rimozione, utilizzare invece jqXHR.done(), jqXHR.fail() e jqXHR.always().
$.get("urlToCheck.com").done(function() {
alert("success");
}).fail(function() {
alert("failed.");
});
- 1. visualizzazione onchange Record GridView se esiste dal database utilizzando Javascript
- 2. Visualizzazione dell'immagine in Iframe
- 3. Javascript per rilevare se l'utente cambia scheda
- 4. Esiste un modo indipendente dall'ambiente per rilevare oggetti host Javascript?
- 5. usando stat per rilevare se esiste un file (lento?)
- 6. ottenere il titolo della pagina iframe da JavaScript utilizzando jQuery
- 7. AngularJS: $ viewContentLoaded attivato prima della visualizzazione parziale
- 8. Visualizzazione della rete JavaScript?
- 9. Rileva iFrame incorporando in Javascript
- 10. Creazione di un IFRAME utilizzando JavaScript
- 11. Neo4j controlla se il nodo esiste prima della creazione?
- 12. JavaScript se var esiste
- 13. Verifica se il database esiste prima della creazione
- 14. Controlla javascript per mancante ";" prima della compressione
- 15. Come posso rilevare se un iframe è stato caricato?
- 16. Rilevamento dell'altezza dell'area di visualizzazione utilizzando Javascript
- 17. Come rilevare l'URL iframe corrente?
- 18. Messaggio di visualizzazione solo per il caricamento della prima pagina
- 19. Esiste un modo per rilevare se un'unità è un SSD?
- 20. Disabilita JavaScript in iframe/div
- 21. IE Problema: Invio modulo per un iframe utilizzando JavaScript
- 22. problema JavaScript con iframe che è nascosto prima caricato
- 23. HTML5; rilevare la presenza della tastiera fisica in Javascript
- 24. scorrimento iframe su iOS è risolto, ma la visualizzazione della pagina iframe incompleta
- 25. Javascript: Verificare se esiste nomeclasse
- 26. Come rimuovere il bordo da iframe in IE utilizzando javascript
- 27. Attendere iframe per caricare in JavaScript
- 28. Quando filtrare/disinfettare i dati: prima dell'inserimento del database o prima della visualizzazione?
- 29. Rilevare se il buffer di quickfix esiste in VIM
- 30. Rimozione della prima visualizzazione della parola da una stringa?
'Ma si noti che funzionerà solo sulla stessa origine. –
sto usando chrome, funzionerà? – Mario
@ Mario - Sì, a condizione che si trovi nella stessa origine a causa della stessa politica di origine. –