[Javascript] Déclarer or not ?

Statut
N'est pas ouverte pour d'autres réponses.

SkYlEsS

Elite
:signe: C'est encore moi :cool:

Aujourd'hui, je vous pose cette question :

  • <a href="javascript:fonction();" ...>

  • <a href="javascript:fonction(); return false;" ...>

  • <a href="javascript:fonction()" ...>

  • <a href="javascript:fonction(); return false" ...>

  • <a href="fonction();" ...>

  • <a href="fonction(); return false;" ...>

  • <a href="fonction()" ...>

  • <a href="fonction(); return false" ...>

  • <a href="#" onclick="fonction()" ...>

  • <a href="#" onclick="fonction(); return false" ...>

  • <a href="#" onclick="fonction();" ...>

  • <a href="#" onclick="fonction(); return false;" ...>

  • <a href="#" onclick="javascript:fonction()" ...>

  • <a href="#" onclick="javascript:fonction(); return false" ...>

  • <a href="#" onclick="javascript:fonction();" ...>

  • <a href="#" onclick="javascript:fonction(); return false;" ...>


Qu'est-ce que c'est-y qu'est mieux ? (Ouais, j'fais un peu dans l'originalité ...)

Bref, faut-il déclarer "javascript", faut-il la fonction dans l'attribut href ou onclick et faut-il fermer la fonction ?

:]

Pour ma part je penche plutôt pour un

  • <a href="#" onclick="fonction(); return false;" ...>
 

Bartdude

Touriste
y'a aussi ca (et je me demande si c'est pas le mieux en fait...)

<a href="" onclick="fonction();return false;">
 

guslinux

Gamerz'ien
SkYlEsS a dit:
:signe: C'est encore moi :cool:

Aujourd'hui, je vous pose cette question :

  • <a href="javascript:fonction();" ...>

  • <a href="javascript:fonction()" ...>

  • <a href="fonction();" ...>

  • <a href="fonction()" ...>

Qu'est-ce que c'est-y qu'est mieux ? (Ouais, j'fais un peu dans l'originalité ...)

:]
t'as vraiment de ces questions ^^

perso je dirais que c'est mieux avec le ; derière... ms bon si ca marche : que demander de plus ?
 

guslinux

Gamerz'ien
Bartdude a dit:
y'a aussi ca (et je me demande si c'est pas le mieux en fait...)

<a href="" onclick="fonction();return false;">
le return false arrrete le chargement de la page : ca c'est une question intéressante :-D
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Parce que j'aime trouvé la perfection ... :-D

Une idée ?
 

Ahava

Revenant
SkYlEsS a dit:
Parce que j'aime trouvé la perfection ... :-D

Une idée ?
Perfection en orthographe :D


(hors sujet, je sais, jsuis claqué, j'ai codé du php toute la jounrée :pfiou:)
 
1er
OP
SkYlEsS

SkYlEsS

Elite
... on va dire qu'il était aussi tard pour moi ... :=)

Autant pour moi !
 

Tifox

ou pas
Déjà, on passe sur l'histoire de la présence ou absence du ";" a la fin, on s'en fou.

Pour le onclick, rajouter "javascript:" devant ne sert a rien non plus (je ne suis même pas sur que ce soit dans la spécification).

Maintenant, mettre dans href ou dans onclick ? normalement, le javascript est fait pour se mettre dans le onclick, mais il a aussi été autorisé de le mettre dans le href, avec "javascript:" devant. Dans ce cas, ou lieu d'ouvrir le lien, ça lance le javascript (j'aime enfoncer des portes ouvertes).
Il y a de petite différence de comportement entre les 2 : lors du click sur un lien, le onclick est exécuté. Si le onclick retourne true à la fin, ou ne retourne rien (donc ne retourne pas false), alors le href est executé par la suite (qu'il y ait un lien dedans ou un autre javascript) ; si il retourne false, alors le href n'est pas exécuté.
Si tu met dans le onclick, n'oublie pas le "#" dans le href, sinon tu vas avoir un rechargement de page si tu as oublié de retourner false dans ton onclick.

Note que, pour une raison que je n'ai jamais élucidée, j'ai déja eu des javascript qui ne s'exécutaient pas convenablement dans le onclick mais sans problème dans le href, et inversément.
 

Bartdude

Touriste
Tifox a dit:
Déjà, on passe sur l'histoire de la présence ou absence du ";" a la fin, on s'en fou.

Si tu met dans le onclick, n'oublie pas le "#" dans le href, sinon tu vas avoir un rechargement de page si tu as oublié de retourner false dans ton onclick.
Avec # aussi la page se recharge si y'a pas de return false dans le onclick.
 

Tifox

ou pas
Bartdude a dit:
Avec # aussi la page se recharge si y'a pas de return false dans le onclick.
Je suis certain du contraire, je viens encore de tester. Le # derrière une url dans un href te renvoie vers une balise dans la page (le nom de la balise se trouve derrière le #). Ici, comme il n'y a pas de nom de page, on reste dans la même page, et comme il n'y a pas de nom de balise, on renvoie en haut de la page. Ceci marque donc le problème de la solution : si tu as scrollé dans la page, tu reviens au dessus. Il me semble qu'il y avait une solution pour éviter ce scrolling vers le haut de la page, mais je ne m'en souviens plus.
 

Bartdude

Touriste
Tifox a dit:
Je suis certain du contraire, je viens encore de tester. Le # derrière une url dans un href te renvoie vers une balise dans la page (le nom de la balise se trouve derrière le #). Ici, comme il n'y a pas de nom de page, on reste dans la même page, et comme il n'y a pas de nom de balise, on renvoie en haut de la page. Ceci marque donc le problème de la solution : si tu as scrollé dans la page, tu reviens au dessus. Il me semble qu'il y avait une solution pour éviter ce scrolling vers le haut de la page, mais je ne m'en souviens plus.
Au temps pour moi, ca te ramène effectivement vers une anchor vide, et donc ca ramène au dessus de la page, mais effectivement sans reload.
Le return False permet sauf erreur d'éviter ce retour...
 

Tifox

ou pas
Une solution pour éviter le scrolling est de mettre un nom de balise qui n'existe pas (donc href="#1" si on a aucune anchor 1 dans la page).

Mais une petit return false dans le onclick est quand même mieux (mais si vite oublié)
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Donc, en résumé (Moi je mets les ";" pour faire propre) :

  • <a href="javascript:fonction();" ...>

(Le "return false" sert-il a quelque chose dans le "href" ?)

  • <a href="#" onclick="fonction(); return false;" ...>

Avec une préférence pour le second ... :)
 

Bingo

Beer Addict
Oui le second, mais pour moi c'est ta fonction qui devrait déterminer la valeur de retour.
 

guslinux

Gamerz'ien
Tifox a dit:
Je suis certain du contraire, je viens encore de tester. Le # derrière une url dans un href te renvoie vers une balise dans la page (le nom de la balise se trouve derrière le #). Ici, comme il n'y a pas de nom de page, on reste dans la même page, et comme il n'y a pas de nom de balise, on renvoie en haut de la page. Ceci marque donc le problème de la solution : si tu as scrollé dans la page, tu reviens au dessus. Il me semble qu'il y avait une solution pour éviter ce scrolling vers le haut de la page, mais je ne m'en souviens plus.
Regardes l'url de ta page quand tu cliques sur un <a href="#"> ... ca recharge pas le contenu, mais il y a une modif sur l'url quand meme ...
 

Tifox

ou pas
Guslinux : Effectivement, l'url change (ce qui peut être gênant pour certains trucs)

SkYlEsS : je ne pense pas que tu puisses faire
Code:
<a href="javascript:fonction(); return false;" ...>
car dans le href, derrière javascript:, tu ne peut y mettre qu'une fonction. D'ailleurs, après un test rapide sous firefox, ça ne marche pas.

Bingo : Si tu veux utiliser la valeur de retour de la fonction dans le onclick, il faut pas oublier de mettre le return et que la fonction retourne bien quelque chose (c'était juste une précision):
Code:
<a href="#1" onclick="return function()">...
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Tifox a dit:
Code:
<a href="#1" onclick="return function()">...
ou

Code:
<a href="#" onclick="function(); return false;" ... >
Edit : ;)
 

Bingo

Beer Addict
Tifox a dit:
Bingo : Si tu veux utiliser la valeur de retour de la fonction dans le onclick, il faut pas oublier de mettre le return et que la fonction retourne bien quelque chose (c'était juste une précision):
Code:
<a href="#1" onclick="return function()">...
Tout à fait.

Une page claire et précise sur tout ça : ICI
 

Tifox

ou pas
Pour SkYlEsS :

Code:
<a href="#" onclick="return function(); return false;" ... >
Ton "return false" ne sera jamais exécuté, car il ne peut y avoir qu'un seul return pour le onclick, et ça retourne la valeur retournée par la fonction vu le "return function()" placé devant.

Si tu veux être sur que ton onclick retourne false, sans être sur que ta fonction retourne toujours false, il faut utiliser

Code:
<a href="#1" onclick="function(); return false;" ... >

Note qu'un autre avantage de toujours mettre href="#1" est que si l'utilisateur a désactivé le javascript, au moins il ne se passera rien quand il cliquera.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Oui, c'est ce que je voulais dire ... J'ai copié le code précédent et j'n'avais pas vu ce premier return. Autant pour moi.

Et s'il clique, il se passe quelque chose ?
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut