Je me demande comment je peux utiliser JavaScript pour simuler un clic sur un élément.
Actuellement, j'ai :
<script type="text/javascript">
function simulateClick(control)
{
if (document.all)
{
control.click();
}
else
{
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
control.dispatchEvent(evObj);
}
}
</script>
<a href="http://www.google.com" id="mytest1">test 1</a><br>
<script type="text/javascript">
simulateClick(document.getElementById('mytest1'));
</script>
Mais ça ne marche pas :(
Une idée ?
Voici ce que j'ai préparé. C'est assez simple, mais ça marche :
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
Utilisation :
eventFire(document.getElementById('mytest1'), 'click');
La réponse du haut est la meilleure ! Cependant, elle ne déclenchait pas les événements de souris dans Firefox lorsque etype = 'click'
.
J'ai donc changé la valeur de document.createEvent
en 'MouseEvents'
et cela a réglé le problème. Le code supplémentaire sert à tester si un autre bout de code interfère ou non avec l'événement, et s'il est annulé, je le consigne dans la console.
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(etype, true, false);
var canceled = !el.dispatchEvent(evObj);
if (canceled) {
// A handler called preventDefault.
console.log("automatic click canceled");
} else {
// None of the handlers called preventDefault.
}
}
}