E.href javascript ????

Fermé
fragcreator - 9 janv. 2008 à 21:10
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 12 janv. 2008 à 17:59
Bonjour,

j'ai un fichier.js dans un cms que j'utilise et que j'aimerait modifier mais il y as une ligne que je ne comprend pas completement!
Voila le code en question:

Sur une page qu'on vas nommer page.html j'ai un appel au fichier.js qu'on va appeler script.js comme ceci

<script language="JavaScript" src="script.js"></script>

Puis des liens sur cette meme page utilisant des fonctions presente dans script.js comme ceci:

<a href="link.html" onClick="function_one(this,123);">

Et enfin le code de script.js

function function_one(e,i){
if(document.all)e=event
if(e.type=="click"){
if(document.images)
(new Image()).src="videos_loader.php?i="+i+"&l="+e.href;
return true;
}

Voila mon probleme c'est que je n'arrive pas a savoir ce qu'est le "e.href", ou plutot qu'est genre d'url ca va lancer finalement ?

Merci d'avance

11 réponses

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
9 janv. 2008 à 23:21
Hello,

Dans

<a href="link.html" onClick="function_one(this,123);">

Le "this" représente la balise en cours (donc l'objet tag "a") ; c'est ce qui est passé pour l'argument "e"...

La première condition s'applique uniquement pour Internet Explorer... "event" doit sûrement contenir l'objet ayant provoqué l'événement mais ne me demande pas pourquoi le réaffecter si "this" le fait déjà, peut être que c'est un objet plus complet.

Par contre je ne savais pas que cet objet contient une propriété "type" accessible depuis JS qui définit apparemment le type de l'événement ayant survenu... on en apprend tous les jours.

Enfin c'est souvent difficile de savoir avec ce genre de scripts générés automatiquement par les CMS... on ne sait jamais quel événement provoque un événement automatique sur un autre et ça peut être défini à plusieurs endroits. Bref :

"e.href" est donc censé contenir "link.html" au moment du clic... tu peux vérifier cela en faisant un "window.alert(e.href);"

;-)
0
alors j'ai essayer le windows alert et ca ne donne rien enfin l'alert ne se lance pas alors que si je met seulement href dans l'alert ca marche !

conclusion je ne sait tojours pas a quoi correspond ce "e" ???
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
10 janv. 2008 à 21:50
De rien.

si je met seulement href dans l'alert ca marche !

Ca ne doit pas... si tu as mis l'alert là où tu étais supposé le mettre (c'est à dire au tout début de la fonction), "href" est une variable indéfinie (à moins qu'elle ne soit déclarée en global). J'insiste : "e.href" contient l'adresse représentée par <a href="...."></a> Par contre c'est "e.type" qui ne donne rien chez-moi.
0
arf, alors je ne comprend plus rien .

meme en mettant au debut de la fonction avec e.href aucune alerte !?!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
10 janv. 2008 à 22:09
Je serais curieux de voir comment tu t'y prends... moi je m'y suis pris comme ça :
<html>
<head>
<script type="text/javascript">
function function_one(e,i){
	alert("e : " + e + "\ne.type : " + e.type + "\ne.href : " + e.href);
} 
</script>
</head>
<body>
<a href="link.html" onClick="function_one(this,123);">Test e</a>
</body>
</html>
0
Bonjour,
A mon avis il y a une erreur dans le code de départ.
On passe effectivement l'objet <a> à la fonction.
Mais e est réaffecté au window.event qui a déclenché l'appel de la fonction (e=event )
Puis le e.href essaie d'accéder à la propriété href du <a> passé en paramètre à la fonction... Ce qui est impossible car e a été réaffecté.
Un même nom de variable pour 2 objets différents...
Il suffit de changer le nom du paramètre et cela devrait fonctionner...

Cordialement,
Jres
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
11 janv. 2008 à 19:08
Bonjour Jres,

J'aimerais réagir sur ta déclaration "e est réaffecté au window.event [...] (e=event )" .

En réalité on ne passe dans cette instruction que si "document.all", c'est à dire en présence d'IE seulement (http://fr.selfhtml.org/javascript/objets/all.htm#generalites). Je viens de tester sous IE et effectivement "window.event" ne contient plus du tout l'objet tag "<a>" par contre le "type" est affiché.

Quoiqu"il en soit j'ai un affichage dans tous les cas donc je suppose que notre ami a mal placé ses instructions de test.
0
mais en fait j'ai l'impression que vous croyez que le code ne fonctionne pas ?
Il fonctionne j'aimerais juste savoir a quoi correspond e.href, en gros qu'est ce que ca veut dire pour pouvoir le modifier !

Merci
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 janv. 2008 à 00:11
Bonsoir,

Tu te trompes. On suit simplement les instructions de la fonction (on la décortique pour toi, pour que tu comprennes justement ce qu'elle fait). Et on te dit donc que selon le contexte général et le navigateur utilisé, ça varie... mais e.href (pour la nième fois) correspond à l'adresse absolue du lien. Je t'ai donné un moyen de vérification et là tu as dit que ça ne fonctionne pas... donc j'en reste supris parce que si le moyen de vérification que je t'ai donné ne fonctionne pas, le code ne peut pas fonctionner non plus. En informatique c'est simple, si on veut connaître ce que contient une variable on affiche sa valeur. ;-)
0
Oui c'est exactement ce que j'ai essayer de faire avant de poser la question sur le forum.
Lorsque j'"alert" seulement le e ca ne donne rien lorsque j'"alert" le e.href rien non plus il y as seulement que lorsque j'"alert" le href que j'obtient ladresse de la page.

c'est vraiment bizarre
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 janv. 2008 à 00:22
:-s Effectivement très étrange.

Pourrais-tu poster les différents codes (donc les 3 versions de la fonction) avec tes alert s'il te plait ? Et aussi nous dire avec quel navigateur tu as réalisé les tests et quelles valeurs tu obtiens ? Merci.
0
Alors voici les 3 versions

1. Celle ci ne donne rien sur ie et firefox
function function_one(e,i){
if(document.all)e=event
if(e.type=="click"){
if(document.images)
alert( e.href);
return true;
}

2. Celle ci ne donne rien non plus
function function_one(e,i){
if(document.all)e=event
if(e.type=="click"){
if(document.images)
alert( e);
return true;
}

3. Celle ci donne l'adresse de la page en cour
function function_one(e,i){
if(document.all)e=event
if(e.type=="click"){
if(document.images)
alert(href);
return true;
}
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 janv. 2008 à 17:59
Ok merci bien pour ce rapport :-)

Je commence à comprendre la bizarreté de la chose...

En fait je ne comprenais pas pourquoi dans certains cas tu avais un affichage et dans d'autres pas mais vu l'endroit où tu places l'instruction d'affichage ça m'étonne moins du coup... Ca m'étonne moins mais plus dans le sens où je ne comprends pas d'où vient la variable "href"... je pense que venant d'un CMS ce code est lié à d'autres choses comme je l'ai supposé plus haut (en plus d'être douteusement écrit si tu l'as recopié correctement).

Je ne pense pas pouvoir t'aider davantage désolé.
0