Récupération de document.location dans une variable pour une verification

surfman38 Messages postés 3 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 18 novembre 2009 - 18 nov. 2009 à 14:07
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 - 18 nov. 2009 à 14:59
Bonjour à tous,

Pour un besoin pro je dois faire un petit bout de javascript...

L'objectif étant de différencier si le site web consulté a été enregistré en tant que page web sur le disque dur ou bien s'il est consulté directement depuis le serveur.

document.location me retourne le chemin absolu, c'est ce qu'il faut car maintenantant si j'accède à mon site par son hebergeur j'aurais une URL de type : http://www.monsite.com, et si la personne a enregistré l'index du site sur son disque dur, nous aurons file://C:\chemindufichier.html

donc la suite est simple, on recherche dans la chaine si le mot http est présent et s'il ne l'est pas on affiche un message : "l'index du site est sur votre disque dur" et on stop le chargement de la page

J'ai donc fait ceci, sauf que ça marche pas...

var chaine = document.location
var expression = new RegExp("http","g");
if (chaine.search(expression)) {
document.write("Ce fichier a été chargé depuis HTTP");
stop();
}

Si je remplace document.location par "http://monsite.com", ça fonctionne.
Si je fais un document.write(chaine);, mon résultat est bien http://monsite.com, mais il ne trouve pas le mot http...

J'ai comme l'impression qu'il faut convertir document.location en texte ? (je suis débutant je ne comprends peut être pas comment fonctionne javascript correctement)

Une idée?

2 réponses

surfman38 Messages postés 3 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 18 novembre 2009
18 nov. 2009 à 14:52
Je viens de modifier légèrement mon script :

var texte = document.location
if (texte.search(/http/i) != "0")
{
document.write("L'index se trouve sur votre disque dur ?!");
stop();
}

Cette fois ci, ça fonctionne depuis l'hebergeur, mais pas depuis le disque dur, c'est à dire :

je remplace document.location par "file://blablabl"; il m'éjecte ce qui est normale, et inversement document.location me retourne mon URL avec http et execute le reste du code.

Par contre quand on enregistre la page sur le disque, ça ne fonctionne absolument pas, pourtant si je fais un document.write(texte); il m'affiche bien file:/// mais le reste du code ne s'execute pas.

Pourtant javascript fonctionne bien sur le poste client, et non sur le serveur, je comprends plus rien...
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
18 nov. 2009 à 14:59
Bonjour,
une petite question : Le fait de différencier le serveur du local va servir à quoi ?
Sans oublier qu'il est fort simple de faire croire qu'on est sur le net, des logiciels comme wamp, xamp le font très bien et du coup automatiquement, l'ouverture de la page se faisant via http://localhost/maPage.html, le script pensera qu'on est sur le web alors que pas du tout.
Sinon, une autre solution (mais qui ne corrige pas le problème précédant):
<script>
var chaine = document.location.toString();
if (chaine.indexOf ("http") != -1) {
document.write("Ce fichier a été chargé depuis HTTP");
stop();
} 
else{
document.write("Local");
}
</script>

Mais qui fonctionne tout de même...

[o-_-o]
0
Rejoignez-nous