Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment déclencher artificiellement la fonction affecté à onclick ?

25 réponses
Avatar
Jean Ceugniet
Salut,

Voilà, j'ai la fonction javascript suivante :

> function partieJoueurOut (joueur_id, lien)
> {
> lien.parentNode.style.display = "none";
> x_maj_stats (joueur_id, $idPartie, majFinie);
> }



et le code php suivant :

> <li><a href="#" onclick="partieJoueurOut($joueur_id, this);">$nom est OUT</a></li>

(Les variables $ sont des variables php, le code est généré en php).
Sur une certaine condition, je souhaite pouvoir déclencher
artificiellement la fonction affectée au onclick d'un certain lien; je
peux sans problème repérer le lien en question dans la page (c'est le
seul dont le display ne soit pas encore à none), et je voudrais pouvoir
déclencher la fonction affectée à son évènement onclick.
Comme faire pour obtenir l'équivalent d'un "execute (this.onclick);" ?

Merci

10 réponses

1 2 3
Avatar
Mickaël Wolff

Comme faire pour obtenir l'équivalent d'un "execute (this.onclick);" ?


cible.onclick() ;

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
ASM
En réponse à Jean Ceugniet qui écrivit, en date du : 1/09/07 12:21, le
message suivant :
Salut,

Voilà, j'ai la fonction javascript suivante :

function partieJoueurOut (joueur_id, lien)
{
lien.parentNode.style.display = "none";
x_maj_stats (joueur_id, $idPartie, majFinie);
}




et le code php suivant :

<li><a href="#" onclick="partieJoueurOut($joueur_id, this);">$nom est
OUT</a></li>


(Les variables $ sont des variables php, le code est généré en php).
Sur une certaine condition, je souhaite pouvoir déclencher
artificiellement la fonction affectée au onclick d'un certain lien; je
peux sans problème repérer le lien en question dans la page (c'est le
seul dont le display ne soit pas encore à none), et je voudrais pouvoir
déclencher la fonction affectée à son évènement onclick.


il suffit donc de lancer cette fonction, non ?

this.onclick();

Merci


toujours chercher au plus simple :-)



var truc = document.getElementsByTagName('A');
for(var i=0; i<truc.length; i++)
if(truc[i].style.display!=='none') {
truc[i].onclick();
return false;
}

ou

var truc = document.links;
for(var i=0; i<truc.length; i++)
if(truc[i].href && truc[i].style && truc[i].style.display!=='none') {
truc[i].onclick();
return false;
}



autre exemple :

<form onsubmit="return false;">
<button name="visu" onclick="alert('vu');">voir</button>
<button onclick="visu.click();">cliquer bouton [voir]</button>
</form>
<p><a href="#" onclick="document.forms[0].visu.click();">Cliquer le
bouton [voir]</a>

La fonction JavaScript : element.click();
ne fonctionnerait que pour des boutons de formulaires


à +


Avatar
Jean Ceugniet
Ah ben oui. Je concevais onclick comme un évènement auquel on affectait
une méthode, pas comme une méthode lui-même.

Merci à tous :D
Avatar
ASM
En réponse à Jean Ceugniet qui écrivit, en date du : 1/09/07 22:23, le
message suivant :
Ah ben oui. Je concevais onclick comme un évènement auquel on affectait
une méthode, pas comme une méthode lui-même.


Je ne sais si c'est tout à fait ça ... ?

essaie :
alert(truc.onclick);

on voit qu'on récupère la fonction contenue dans le onclick de truc

par l'adjonction de () à cette récup on en lance l'appel.

.

Avatar
Cenekemoi
Salut,

Voilà, j'ai la fonction javascript suivante :

function partieJoueurOut (joueur_id, lien)
{
lien.parentNode.style.display = "none";
x_maj_stats (joueur_id, $idPartie, majFinie);
}




et le code php suivant :

<li><a href="#" onclick="partieJoueurOut($joueur_id, this);">$nom
est OUT</a></li>


(Les variables $ sont des variables php, le code est généré en php).
Sur une certaine condition, je souhaite pouvoir déclencher
artificiellement la fonction affectée au onclick d'un certain lien; je
peux sans problème repérer le lien en question dans la page (c'est le
seul dont le display ne soit pas encore à none), et je voudrais
pouvoir déclencher la fonction affectée à son évènement onclick.
Comme faire pour obtenir l'équivalent d'un "execute (this.onclick);" ?

Merci


Méfie-toi juste de ton code dit php avec ta variable $joueur_id car le
généré Html sera du type :

<a href="#" onclick="partieJoueurOut(12345, this);">TOTO est OUT</a>

Tout va bien si $joueur_id est numérique, mais attention s'il peut être
*alpha*. Il faut alors coder en php :

<a href="#" onclick="partieJoueurOut('$joueur_id', this);">$nom est
OUT</a>

(voir les apostrophes autour de $joueur_id)

--
Cordialement, Thierry ;-)


Avatar
Bruno Desthuilliers

kess que ça veut dire "iconifier" ?



la fenêtre disparait (sans que l'appli soit fermée), et une icone de
l'appli apparait dans la barre des taches...



La version de Windows en français que j'utilise appelle ça « réduire ».
Et dans un fichier de configuration sous AIX c'est « minimize ».


Merci Olivier !-)



Avatar
Bruno Desthuilliers
En réponse à Bruno Desthuilliers qui écrivit, en date du : 4/09/07
14:43, le message suivant :



kess que ça veut dire "iconifier" ?

la fenêtre disparait (sans que l'appli soit fermée), et une icone de

l'appli apparait dans la barre des taches...




Ha oui ! Rigolo comme comportement :-)

Ces IE ne nous épargnent vraiment aucune facétie !


N'est-ce pas ?-)

Bon, accessoirement, j'ai (partiellement) résolu le problème, en partie
grâce à un autre de tes posts dans ce thread qui m'a rappelé l'existence
de la fonction click(). Qui - dois-je le préciser - fonctionne sous IE
(même pour un lien), mais lève une exception sous mon vieux mozilla...
J'attends de tester ça demain sous une version récente de Firefox, mais
je subodore que là encore, on est dans une portabilité optimale :(

Enfin bref, c'est que du bonheur.



Avatar
Jean Ceugniet
Salut,

Voilà, j'ai la fonction javascript suivante :

function partieJoueurOut (joueur_id, lien)
{
lien.parentNode.style.display = "none";
x_maj_stats (joueur_id, $idPartie, majFinie);
}




et le code php suivant :

<li><a href="#" onclick="partieJoueurOut($joueur_id, this);">$nom
est OUT</a></li>


(Les variables $ sont des variables php, le code est généré en php).
Sur une certaine condition, je souhaite pouvoir déclencher
artificiellement la fonction affectée au onclick d'un certain lien; je
peux sans problème repérer le lien en question dans la page (c'est le
seul dont le display ne soit pas encore à none), et je voudrais
pouvoir déclencher la fonction affectée à son évènement onclick.
Comme faire pour obtenir l'équivalent d'un "execute (this.onclick);" ?

Merci


Méfie-toi juste de ton code dit php avec ta variable $joueur_id car le
généré Html sera du type :

<a href="#" onclick="partieJoueurOut(12345, this);">TOTO est OUT</a>

Tout va bien si $joueur_id est numérique, mais attention s'il peut être
*alpha*. Il faut alors coder en php :

<a href="#" onclick="partieJoueurOut('$joueur_id', this);">$nom est
OUT</a>

(voir les apostrophes autour de $joueur_id)



Il est numérique :D (mais j'y penserai pour un prochain truc ;) merci)



Avatar
Bruno Desthuilliers


Je confirme.
- sous FF, utiliser:
document.getElementById('mon_lien').onclick();
- sous IE, utiliser:
document.getElementById('mon_lien').click();



Ce qui est amusant, c'est que seul HTMLInputElement.click() est prévu
par la recommandation du W3C
<http://www.w3.org/TR/DOM-Level-2-HTML/html.html>

Je comprends mieux cette incohérence entre les navigateurs !


Ce qui est le plus amusant AMHA (et continue à m'échapper...), c'est la
réaction de IE sur l'utilisation de element.onclick(). Si c'est
systématiquement reproductible, il y a de quoi faire un petit script
très énervant pour les utilisateurs de cette bouse infâme^Mmerveille de
la technologie moderne !-)


Avatar
Bruno Desthuilliers

Comme faire pour obtenir l'équivalent d'un "execute (this.onclick);" ?


cible.onclick() ;



A ce propos, sous IE7, j'ai une bonne blague avec ça (en combi avec un
setTimeout): ça m'iconifie la fenêtre !

j'ai pas encore eu le temps de revenir sur le pb pour essayer de
l'isoler proprement, mais si qqu'un a déjà vu ça et qu'il a trouvé le
joint, l'info m'intéresse...

TIA


1 2 3