l'utilisation de javascript pour détecter si l'url existe avant de l'afficher dans un iframe
Je suis à l'aide de javascript pour passer d'une dynamique de l'url de l'iframe src. mais parfois, l'url n'existe pas, comment pourrais-je détecter la non-existent url à l'avance, de sorte que je peux me cacher l'iframe qui avec l'erreur 404.
Vous devez vous connecter pour publier un commentaire.
À cause de mon faible réputation, je ne pouvais pas commenter Derek 朕會功夫 de réponse.
J'ai essayé ce code comme il est et il ne fonctionne pas bien. Il y a trois questions sur Derek 朕會功夫 du code.
La première est que le temps de async envoyer la demande et le changement de propriété de son "statut" est plus lent que d'exécuter l'expression suivante - si(la demande.statut === "404"). Donc la demande.le statut sera finalement, en raison de l'internet à bande, restent sur le statut 0 (zéro), et de ne pas atteindre le bon code ci-dessous si. Pour corriger cela, c'est simple: changer le "vrai ""faux" sur la méthode ouverte de la requête ajax. Ce sera la cause d'une brève (ou pas) sur le bloc de votre code (en raison de appel synchrone), mais va changer le statut de la demande avant d'atteindre le test sur si.
La deuxième est que l'état est un entier. L'utilisation de '===' javascript opérateur de comparaison vous êtes en train de comparer si le côté gauche de l'objet est identique à celui sur le côté droit. Pour faire ce travail il y a deux façons:
La troisième est que l'objet XMLHttpRequest ne fonctionne que sur les navigateurs récents (Firefox, Chrome et ie 7+). Si vous voulez que l'extrait de travailler sur tous les navigateurs que vous avez à faire dans la voie W3Schools suggère: w3schools ajax
Le code qui a vraiment fonctionné pour moi a été:
Utiliser un XHR et voir si elle vous répond une erreur 404 ou pas.
Mais remarquez qu'il ne fonctionne que sur la même origine. Pour un autre hôte, vous aurez à utiliser un langage côté serveur de le faire, que vous devrez trouver par vous-même.
But notice that it will only work on the same origin.
J'ai trouvé que cela a fonctionné dans mon scénario.
La jqXHR.success(), jqXHR.erreur(), et jqXHR.complet() rappel méthodes introduites dans jQuery 1.5 est déprécié que de jQuery 1.8. Pour préparer votre code pour leur éventuelle suppression, l'utilisation jqXHR.done(), jqXHR.fail(), et jqXHR.toujours() à la place.
Vous pouvez tester l'url via AJAX et lire le code d'état - qui est, si l'URL est dans le même domaine.
Si c'est un domaine distant, vous pouvez avoir un script serveur sur votre propre nom de domaine, découvrez une URL distante.
Vous pouvez essayer de le faire d'un simple à OBTENIR sur la page, si vous obtenez une 200 dos cela signifie que la page existe. Essayez ceci (à l'aide de jQuery), la fonction est la réussite fonction de rappel sur un succès de chargement de la page. Remarque: cela ne fonctionne que sur les sites au sein de votre domaine afin de prévenir les attaques de type XSS. D'autres domaines devront être géré côté serveur