eliminer onclick()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : eliminer onclick()

par algora » 08 févr. 2007, 15:41

merci pour toutes ces précisions

pour en revenir à mon application, il s'agit d'un drag and drop (tool-man).

L'utilisateur est un internaute dédié (back office) qui déplace des éléments sur la page à laide de la souris : il s'agit de modifier le tri d'éléments provenant d'une base mysql à l'aide du drag and drop.
la modification est enregistrée dans la base via un fichier php généré en ajax. Pour que cela soit élégant, j'ai tout simplement préféré faire en sorte que la génération du fichier se fasse de façon immédiate et transparente (c'est à dire sans passer par un bouton submit).
C'est donc l'événement onmouseup qui m'est apparu le plus adapté (mais peut etre me trompe-je)

naturellement, à chaque click sur l'élement de la page (qui comporte un lien permettant d'afficher d'autres éléments), le fichier est généré ce qui sollicite d'autant plus la base de données (pour rien). C'est la raison pour laquelle, je cherchais une astuce pour éliminer le onclick

évidemment, un bouton submit pour générer le fichier réglerait mon problème mais je trouve simplement cela moins élégant...

par Chakra Spirit » 08 févr. 2007, 14:46

Hello,
onMouseUp et onMouseDown décomposent l'événement onClick (on peut difficilement cliquer sans enfoncer et relacher le bouton :))
mmh... pas tout à fait... on peut parfaitement se servir d'un (on)click sans générer de (on)mouseup ou de (on)mousedown. Il suffit simplement d'activer l'action via la touche Entrée.
Si tu inhibes le onClick sur un lien, je ne suis pas certain qu'il continue à fonctionner, donc autant virer le lien..
Surtout pas ! :shock:
Pour que cette action soit accessible à tout le monde (plus particulièrement à ceux qui naviguent au clavier), il est impératif d'avoir un élément focusable tel qu'un lien ou un bouton. Tel que je l'ai mis dans mon exemple précédent, ça fonctionne... quelquesoit le navigateur... C'est même obligatoire pour le coup si on ne veut rien faire d'autre que de générer un fichier... mais dans ce cas, autant créer le lien via JS... voire même ne pas mettre de JS du tout et tout faire via PHP vu que la création du fichier ne se fera pas via ce JS... A partir du moment où cette génération de fichier est lancée via Javascript, elle est considérée comme optionnelle et ça m'étonnerait que ce soit le cas. :wink:
mais à mon avis, ce qu'il faut revoir c'est la capture du onMouseUp pour déclencher la génération de ton fichier.. ca n'est pas habituel et n'a rien d'intuitif pour tes utilisateurs.
Ca, c'est bien vrai. :wink:
... et tout ce qui n'est pas intuitif n'arrange pas l'ergonomie d'une application; ça la complexifie et la rend moins attractive.
S'il clique 20 fois dans le vide (pour surligner du texte, parce qu'il a louper le lien ou autre), tu vas générer 20 fois le fichier ?
Faudrait quand même qu'il clique vingt fois sur le lien pour que ça arrive. :lol: S'il clique à côté, le fichier ne sera pas généré.
Faudrait je pense revoir le besoin réel et le principe de fonctionnement :)
oui, en effet. :roll:

par Ryle » 08 févr. 2007, 10:49

onMouseUp et onMouseDown décomposent l'événement onClick (on peut difficilement cliquer sans enfoncer et relacher le bouton :))

Si tu inhibes le onClick sur un lien, je ne suis pas certain qu'il continue à fonctionner, donc autant virer le lien.. mais à mon avis, ce qu'il faut revoir c'est la capture du onMouseUp pour déclencher la génération de ton fichier.. ca n'est pas habituel et n'a rien d'intuitif pour tes utilisateurs. S'il clique 20 fois dans le vide (pour surligner du texte, parce qu'il a louper le lien ou autre), tu vas générer 20 fois le fichier ?

Faudrait je pense revoir le besoin réel et le principe de fonctionnement :)

par Chakra Spirit » 05 févr. 2007, 11:59

Salut,

Comment lances-tu ta fonction ? Tu ne fais pas un truc dans ce genre ?

Code : Tout sélectionner

oA = document.getElementsByTagName('a')[0]; oA.onclick = function() { return false; } oA.onmouseup = onmouseup; function onmouseup() { ... }
Ceci mis à part, qu'as-tu prévu pour ceux qui naviguent au clavier ? :wink:
Tu pourrais peut-être doubler l'événement avec un onblur. :)

Et si Javascript est désactivé, le lien permet-il de générer le fichier quand même ? C'est à prévoir aussi...

eliminer onclick()

par algora » 04 févr. 2007, 01:17

bonsoir,

voilà, j'ai un soucis avec une fonction onmouseup()

j'utilise cette fonction depuis un lien href pour générer un fichier mais je voudrais que cette opération n'est pas lieu lorsque l'on clique sur le lien

autrement dit, j'aimerais que l'opération de déroule uniquement avec onmouseup mais pas avec onclick...

y-a t-il un moyen ?

merci par avance de votre aide