Un évènnement clic JAVASCRIPT

tatoutati -  
Nicolas M. Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
salut.
Est ce que vous pouvez m'aider de resoudre ce probleme:
je veut faire une fonction qui fait un évennement de clic sur un lien. vraiment j'ais cassé trop la tête mais je n'arrive pas à ce que je cherche.
j'ais réussi de faire un évènnnement de click sur un checkbox et voila le code:

/////// voila le code javascrip

function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
////// et voila le body

<body>
<input type="checkbox" id="checkbox"/><label for="checkbox">Checkbox<br /> </label>
<p>
<input type="button" onclick="simulateClick();" value="Simulate click"/>
</p>
</body>

mais sur un lien je n'arrive pas, aidez moi pleeease!
le code est très important pour moi!!!

Rque: je veut un évènnement de clic, pas une ouverture d'une nouvelle fenêtre qui prend le href de lien ou que la meme fenetre prend le href de lien avec document.location.href.
vous pouvez faire un seul lien dans la page et tester la resultat avec un bouton dans la même page qui appelle la fonction javascript.

merci d'avance pour toute aide.
A voir également:

10 réponses

Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

si j'ai bien compris tu veux appeler ta fonction sur 'onclick' mais que le 'href' ne soit pas pris en compte.

pour cela, soit tu retournes 'false' avec ta fonction, soit tu ajoutes 'return false;' à l'évènement pour que l'évènement ne se propage pas.
<a href="cible.html" onclick="simulateClick();return false;">blabla</a>
2
tatoutati Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
désolé mais ce n'est pas ce que je cherche, je veut que lorsque je clique sur le bouton "Simulate click" le lien sera cliqué automatiquement comme je fait le clique sur ce lien.
je pense que c'est clair, ce n'est qu'un évènnement de clic.
0
tatoutati Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
désolé si le code n'est pas trop claire, ce que je veut plus précisamment est un simulateur de click sur un lien, dans l'exemple que j'ais donné la simulation de click se fait sur le checkbox (quand je clique sur le bouton "simuler click" le checkbox est cliqué automatiquement comme je le clique moi même), je veut que la simulation de click se fait sur un lien,quand je clique sur le bouton le lien est cliqué automatiquement, et voila l'explication de la fonction qui est testé et sa marche:

function simulateClick() {
var evt = document.createEvent("MouseEvents"); // créer un évennement souris
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); // intiailser l'évennement déja crée par un click
var cb = document.getElementById("checkbox"); // pointer sur l'élement qui a l'id "checkbox"
cb.dispatchEvent(evt); // envoyer l'évennement vers l'élement
}

je pense que c'est clair, merci en tout cas pour toute répense.
0
Greg-J
 
Bonjour...
Alors quelle version de script fonctionne sur tout les navigateurs ?

Moi aussi j'en ai besoin : je cherche à déclencher une lightbox ("du type merci d'avoir envoyer ce formulaire...") après validation d'un formulaire en jsp.
Je m'explique : les lightbox ne se déclenchant qu'à partir d'un lien (l'idéal aurait été le submit du formulaire mais il faut bien l'envoyer ce formulaire !!), je voudrait simuler un clic sur un lien quelconque de la page lorsque le formulaire est validé.

Ca en inspire quelques un ?
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

donc toi tu veux poster le <form>, attendre une réponse du serveur (qui valide ou pas) puis afficher une pseudo boite de dialogue.

si c'est ça il faut que tu cherche du côté de l'objet XMLHTTPRequest(), il est utilisé en Javascript (et on appelle Ajax les techniques qui y sont associées).

ça te permettrai d'envoyer les données, attendre la réponse et agir en fonction de la réponse sans avoir à recharger la page.
0
Zestyr Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   52
 
Pour ma part, pour ne pas me perdre dans les "name" et tout ça; je donne toujours un "id" aux éléments HTML.


Name != TagName

Name = nom de l'élément donné par un name= :
<div name=Name></div>

TagName = nom de la balise, dans un code Xhtml valide ça peut etre : div, p, span, h1 ...

Les Tag Name sont très utiles pour faire un script universel (fonctionnel) !

Cordialement Zestyr
0
malagasy_ando
 
Slt,
Ok ok !
Ce que je voulais dire c'est que même avec un TagName, il risque d'avoir des problèmes futurs de maintenance du code. Car si par exemple, tu possèdes au début trois éléments du tag <div>, et que tu veux obtenir le premier élt div, tu fais getElementsByTagName("div")[0]. Or si plus tard, d'autres divs s'ajoutent dans le code précédent, tu devrais changer le "0" en un autre chiffre de valeur supérieure ... Par contre avec un getElementById("unId"), tu ne changes rien et tu ne te soucies d'aucun code d'auparavant.

Mais bon, c'est une question d'habitude et de préférence !

ando.
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

mais à quoi ça te sert de simuler un clic ?
-1
ura
 
Qu'est ce que ça peut te faire...Si tu as la réponse tu la donnes, sinon, tu vas te coucher et tu ne viens pas polluer le forum !

Je suis moi aussi intéresse par une fonction simulant un clic sur une image (mais je ne te dis pas pourquoi, je n'instruis pas les débiles).
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922 > ura
 
salut,

en sachant pourquoi on peut plus facilement trouver comment.

je te laisse un peu de temps pour y réfléchir un peu, tu pourras répondre plus tard.
0
ano123 > ura
 
je sais tres bien pourquoi c'est, enfin je m'en doute
mais c'est pas la peine de parler comme ca aux gens....
tu sais , on est pas la police
c'est pour faire un bot
t'inquiète pas sur le net c vachement connu
on ne juge pas ici , on aide!
0
Pourpette
 
En tout cas merci pour ton script il m'a bien aidé pour la simulation du click mais parcontre il ne marche pas sous IE
-1
EyeOfPhoenix
 
Hello de 'lut

sur Internet Explorer il faut utiliser la méthode click() sur ton objet DOM

exemple : node.click() ou document.getElementById( 'idNode' ).click();


++
0
Zestyr Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   52
 
Slt la methodes click(); marche sur FF et IE, juste sur FF on peut pas l'utiliser avec les name.
il faut faire ça:

<body>
<a href="lien.html"></a>
<script>
document.getElementsByTagName("a")[0].click();
</script>
</body>


Tatoutati je connais pas les méthodes que tu as utiliser pour ta fonction, peux tu me les expliquer stp?

Ps: je cherche moi aussi a simuler un click a une coordonée et ordonée, merci de vos reponses

-1
joora
 
eh non ça ne fonctionne pas ton truc sous ff :

document.getElementsByTagName("a")[0].click is not a function
0
malagasy_ando
 
Salut,
La méthode click() d'un objet devrait toujours marcher sur les objets Html cliquable : bouton, lien, ...
Aurais-tu omis les deux parenthèses après click ?
Pour ma part, pour ne pas me perdre dans les "name" et tout ça; je donne toujours un "id" aux éléments HTML. Comme ça, c'est plus facile d'obtenir l'objet et d'en faire ce que l'on veut, sans se soucier du fait que l'objet se trouve dans un form, dans un autre div, peu importe où il se trouve car le getElementById permet toujours de l'obtenir !

Dans ton cas par exemple, il est plus sûr d'écrire :

<a href="#" id="lnkExemple">le lien</a>
<script language="javascript">
function simulateClick() {
document.getElementById("lnkExemple").click();
}
</script>

ando.
-1
Zestyr Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   52
 
Salut, en usant des Ids on ne peut pas modifié des groupes d'éléments !
-1
Nicolas M. Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   113
 
Avec un className (attribut class de l'élément), on peut ;-)
-1