[Javascript] Déclarer or not ?

Discussion dans 'Web, design' créé par SkYlEsS, 14 Mai 2007.

Statut de la discussion:
Fermée.
  1. Offline
    SkYlEsS Kawai
    :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;" ...>
    SkYlEsS, 14 Mai 2007
    #1
  2. Offline
    Bartdude Touriste
    y'a aussi ca (et je me demande si c'est pas le mieux en fait...)

    <a href="" onclick="fonction();return false;">
    Bartdude, 14 Mai 2007
    #2
  3. Offline
    guslinux Gamerz'ien
    t'as vraiment de ces questions :p

    perso je dirais que c'est mieux avec le ; derière... ms bon si ca marche : que demander de plus ?
    guslinux, 14 Mai 2007
    #3
  4. Offline
    guslinux Gamerz'ien
    le return false arrrete le chargement de la page : ca c'est une question intéressante :-D
    guslinux, 14 Mai 2007
    #4
  5. Offline
    SkYlEsS Kawai
    Parce que j'aime trouvé la perfection ... :-D

    Une idée ?
    SkYlEsS, 15 Mai 2007
    #5
  6. Offline
    Ahava Revenant
    Perfection en orthographe :D


    (hors sujet, je sais, jsuis claqué, j'ai codé du php toute la jounrée :pfiou:)
    Ahava, 15 Mai 2007
    #6
  7. Offline
    SkYlEsS Kawai
    ... on va dire qu'il était aussi tard pour moi ... :=)

    Autant pour moi !
    SkYlEsS, 15 Mai 2007
    #7
  8. Offline
    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.
    Tifox, 15 Mai 2007
    #8
  9. Offline
    Bartdude Touriste
    Avec # aussi la page se recharge si y'a pas de return false dans le onclick.
    Bartdude, 15 Mai 2007
    #9
  10. Offline
    Tifox ou pas
    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.
    Tifox, 15 Mai 2007
    #10
  11. Offline
    Bartdude Touriste
    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...
    Bartdude, 15 Mai 2007
    #11
  12. Offline
    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é)
    Tifox, 15 Mai 2007
    #12
  13. Offline
    SkYlEsS Kawai
    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 ... :)
    SkYlEsS, 15 Mai 2007
    #13
  14. Offline
    Bingo Beer Addict
    Oui le second, mais pour moi c'est ta fonction qui devrait déterminer la valeur de retour.
    Bingo, 15 Mai 2007
    #14
  15. Offline
    guslinux Gamerz'ien
    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 ...
    guslinux, 15 Mai 2007
    #15
  16. Offline
    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()">...
    Tifox, 15 Mai 2007
    #16
  17. Offline
    SkYlEsS Kawai
    ou

    Code:
    <a href="#" onclick="function(); return false;" ... >
    Edit : ;)
    SkYlEsS, 15 Mai 2007
    #17
  18. Offline
    Bingo Beer Addict
    Tout à fait.

    Une page claire et précise sur tout ça : ICI
    Bingo, 15 Mai 2007
    #18
  19. Offline
    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.
    Tifox, 15 Mai 2007
    #19
  20. Offline
    SkYlEsS Kawai
    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 ?
    SkYlEsS, 15 Mai 2007
    #20
Statut de la discussion:
Fermée.