OVH Cloud OVH Cloud

Comment vérifier la validité d'une URL

4 réponses
Avatar
dvvh25tuf0wvl2j
Bonjour,
Est-il possible de v=E9rifier si une URL correspond bien =E0 une page
existante avant de faire un window.open ?

Je veux faire une cellule de navigation rapide : je tape un code dans
un input et ce code correspond =E0 un nom de fichier (=3DCODE.html)
Malheureusement, ce fichier peut a priori se trouver dans plusieurs
r=E9pertoires.
L'id=E9e de l'algo =E9tait

boucle sur une liste contenant les r=E9pertoires =E0 scruter (cod=E9e en
dur dans le script)
Si le fichier est dans ce r=E9pertoire, je l'affiche et je sors de la
boucle
fin de boucle

Merci

4 réponses

Avatar
fgirault
wrote:
Bonjour,
Est-il possible de vérifier si une URL correspond bien à une page
existante avant de faire un window.open ?

Je veux faire une cellule de navigation rapide : je tape un code dans
un input et ce code correspond à un nom de fichier (=CODE.html)
Malheureusement, ce fichier peut a priori se trouver dans plusieurs
répertoires.
L'idée de l'algo était

boucle sur une liste contenant les répertoires à scruter (codée en
dur dans le script)
Si le fichier est dans ce répertoire, je l'affiche et je sors de la
boucle
fin de boucle

Merci


Je pense que ce n'est un bonne idée de vouloir réaliser une
scrutation depuis le client.

Les temps de réponse vont fortement pénaliser l'utilisateur ...

A votre place, je réaliserai un script serveur chargé de cette
recherche. Ainsi, une seule requête s'effectuera au lieu de X
requêtes.

Si vous y tenez vraiment, vous pouvez utiliser XmlHttpRequest et tester
son retour.

--
François

Avatar
Jice
Merci pour cette réponse.
En fait, il ne s'agit pas de scruter mais bien de "spéculer" :
par exemple, j'ai deux répertoires :
titi
toto
et j'essaie
ouvrir ../titi/monfichier.html
Si j'ai une erreur,
j'ouvre ../toto/monfichier.html

Je ne souhaite pas écrire de script serveur car pour l'instant
l'ensemble des pages est composé de html pur avec 2 fonctions de
javascript. Cela permet de rendre disponible l'ensemble du document au
téléchargement sans se soucier de la configuration des postes.

Je connais les répertoires (en nombre limité) dans lesquels le
fichier est susceptible de se trouver donc je voudrais faire cela par
tests successifs car le listing des répertoires en question pour
tester si le fichier se trouve dedans serait certainement plus long.

En tout cas, merci pour votre réponse, je vais essayer de voir comment
l'appliquer.

Jice
Avatar
Pierre Goiffon
wrote:
Est-il possible de vérifier si une URL correspond bien à une page
existante avant de faire un window.open ?


XMLHttpRequest, récupérer le status HTTP en retour
Il y a un bon article d'introduction à XMLHttpRequest sur
Openweb.eu.org, mais le site ne semble pas répondre

Avatar
Jice
Merci à ceux qui m'ont donné quelques idées.
Voici donc la fonction que j'ai retenue (si cela intéresse quelqu'un)

function quickNavigate(str)
{
if (str != '')
{
var xhrRef = null;
var lstRep=new Array('Fich', 'Fich', 'Tirf', 'Tirf',
'Tact', 'Tact');
// Les éléments sont doublés pour contourner un bug
// non identifié : seuls les répertoires impairs fonctionnent
var url='';

// Je choisi l'objet en fonction du navigateur
if (window.XMLHttpRequest) // Firefox
{
xhrRef = new XMLHttpRequest();
} else if(window.ActiveXObject) { // Internet Explorer
xhrRef = new ActiveXObject("Microsoft.XMLHTTP");
} else { // XMLHttpRequest non supporté par le navigateur
alert("Pas de support des objets XMLHTTPRequest...");
return;
}

// Je regarde dans chacun des répertoires si le
// fichier s'y trouve
for (i=0; i<lstRep.length; i++)
{
var rep=lstRep[i];
// Construction du nom du fichier
url="../" + rep + "/" + str + ".html";

xhrRef.open("GET", url, false);
try
{
xhrRef.send(null);
// Si la page n'existe pas, une exception
//est lancée
} catch (error) {
continue;
}
// Si aucune exception n'a été lancée, j'ouvre la page
window.open(url, "_self");
break;
}
}
return false;
}