Me pregunto cómo puedo usar JavaScript para simular un clic en un elemento.
Actualmente tengo:
<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>
Pero no funciona :(
¿Algunas ideas?
javascript
Pez Belgin
fuente
fuente
Respuestas:
Esto es lo que cociné. Es bastante simple, pero funciona:
Uso:
fuente
document.querySelector('[value="2706236"]').nextSibling.nextSibling.dispatchEvent(ev);
:)dispatchEvent
o , ya que parece que es sincrónico .click
setTimeout
dispatchEvent
Event.initEvent
ahora está en desuso developer.mozilla.org/en/docs/Web/API/Event/initEvent¿Qué pasa con algo simple como:
Compatible incluso con IE.
fuente
¿Has considerado usar jQuery para evitar toda la detección del navegador? Con jQuery, sería tan simple como:
fuente
Referencia
fuente
Podrías ahorrarte un montón de espacio usando jQuery. Solo necesitas usar:
fuente
¡La mejor respuesta es la mejor! Sin embargo, no estaba activando eventos de mouse para mí en Firefox cuando
etype = 'click'
.Por lo tanto, he cambiado el
document.createEvent
que'MouseEvents'
y que solucionó el problema. El código adicional es para probar si otro bit de código estaba interfiriendo o no con el evento, y si se cancelaba, lo registraría en la consola.fuente
Siga este enlace para conocer los eventos del mouse usando Javascript y la compatibilidad del navegador para el mismo
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent#Browser_compatibility
fuente