Tester à la volée (en JavaScript)
si une adresse url existe ou pas
Nous utiliserons pour cela l'objet XMLHttpRequest mais IL EST LIMITE AU DOMAINE dans lequel il est appellé. Pour dépasser cette limite, nous pouvons utiliser PHP, c'est à dire que XMLHttpRequest interrogera un fichier PHP qui lui interrogera tout le web.
Les fonctions JavaScript (fichier : xmlhttprequest.js)
function xhr_nouveau()
// creation du Xml http resquest
// suivant la syntaxe des differents navigateurs
{
if (window.XMLHttpRequest)
return new XMLHttpRequest();
else if(window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
else
{
alert('impossible de creer "Xml http resquest"');
return false;
}
}
function xhr_tester_url(adresse)
{
// cette fonction est plus lante et necessite PHP (et donc que la page qui l'utisie soit traité par un serveur !)
// mais elle peut tester toutes les adresse Web (peut importe leur contenu html, image etc...)
// retourne true si l'adresse a put être verfiée comme valide
// retourne false sinon
xhr = xhr_nouveau();
//si xhr a été crée
if (xhr!=false)
{
// appel de l'adresse en mode synchrone (avec false)(c.a.d on attend le resultat avant de continuer)
xhr.open('GET','http://test_url.php?adresse='+adresse, false);
alert('erreur');
xhr.send(null);
// retourner true si le resultat est 'OUI'
if (xhr.responseText=='OUI')
return true;
}
// pas de xhr ou adresse invalide
return false
}
function xhr_tester_url_locale(adresse)
{
// retourne true si l'adresse a put être verfiée comme valide
// retourne false sinon
xhr = xhr_nouveau();
//si xhr a été crée
if (xhr!=false)
{
// appel de l'adresse en mode synchrone (avec false)(c.a.d on attend le resultat avant de continuer)
xhr.open('HEAD',adresse, false);
xhr.send(null);
// retourner true si le resultat est 'OUI'
if(xhr.status == 200)
return true;
}
// pas de xhr ou adresse invalide
return false
}
Le script PHP (fichier : test_url.php)
<?php
//Vérifier la validité d'un adresse URL.
//Permet d'afficher un message si le lien d'une URL est valide ou non.
if (isset($_GET['adresse']))
{
$file = @fopen($_GET['adresse'], 'r');
if ($file)
{
echo 'OUI';
exit;
}
}
echo 'NON';
?>
Le fichier HTML qui utilise le script JavaScript
<html>
<head>
<title>teste de Xml http resquest</title>
<script type="text/javascript" src="xmlhttprequest.js"></script>
</head>
<body>
<SCRIPT language="javascript">
alert ('commencer le premier teste');
if (xhr_tester_url("http://www.oblog.fr"))
alert ("l'adresse existe");
else
alert ("l'adresse n'existe pas");
alert ('commencer le second teste');
if (xhr_tester_url_locale("nimportequoi.html"))
alert ("l'adresse existe");
else
alert ("l'adresse n'existe pas");
alert ('commencer le troisieme teste');
if (xhr_tester_url_locale("tester_xmlhttprequest.html"))
alert ("l'adresse existe");
else
alert ("l'adresse n'existe pas");
</script>
c'est fait
</body>
</html>