Sé sobre el document.form.button.click()
método. Sin embargo, me gustaría saber cómo simular el onclick
evento.
Encontré este código en algún lugar aquí en Stack Overflow, pero no sé cómo usarlo :(
function contextMenuClick()
{
var element= 'button'
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('contextmenu', true, true,
element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
false, false, false, 1, null);
element.dispatchEvent(evt);
}
¿Cómo disparo un evento de clic del mouse usando JavaScript?
javascript
dom-events
mouseclick-event
Nok Imchen
fuente
fuente
Respuestas:
(Versión modificada para que funcione sin prototype.js)
Puedes usarlo así:
Tenga en cuenta que como tercer parámetro puede pasar 'opciones'. Las opciones que no especifique se toman de las opciones predeterminadas (consulte la parte inferior del script). Entonces, si por ejemplo desea especificar las coordenadas del mouse, puede hacer algo como:
Puede usar un enfoque similar para anular otras opciones predeterminadas.
Los créditos deben ir a kangax . Aquí está la fuente original (prototype.js específica).
fuente
Aquí hay una función de JavaScript puro que simulará un clic (o cualquier evento del mouse) en un elemento de destino:
Aquí hay un ejemplo de trabajo: http://www.spookandpuff.com/examples/clickSimulation.html
Puede simular un clic en cualquier elemento del DOM . Algo así
simulatedClick(document.getElementById('yourButtonId'))
funcionaría.Puede pasar un objeto
options
para anular los valores predeterminados (para simular qué botón del mouse desea, si se mantiene Shift/ Alt/ Ctrl, etc.) Las opciones que acepta se basan en la API MouseEvents .He probado en Firefox, Safari y Chrome. Internet Explorer podría necesitar un tratamiento especial, no estoy seguro.
fuente
type: options.click || 'click'
que probablemente debería serlotype: options.type || 'click'
.<div id = "outer"><div id = "inner"></div></div> simulatedClick(document.getElementById('outer'));
no hará clic en el elemento interno.div
contiene un botón o un enlace: no querría que un clic en el exterior activara un clic en el elemento interno.||
operador para casos como este, porque whoops,canBubble:options.canBubble || true,
siempre se evalúa como verdadero ahora, y aparentemente nadie lo notará durante 5 años.Una forma más sencilla y estándar de simular un clic del mouse sería usar directamente el constructor de eventos para crear un evento y enviarlo.
Demostración: http://jsfiddle.net/DerekL/932wyok6/
Esto funciona en todos los navegadores modernos.
MouseEvent.initMouseEvent
Desafortunadamente, para los navegadores antiguos, incluido IE, deberá usarse, aunque está en desuso.fuente
De la documentación de Mozilla Developer Network (MDN), HTMLElement.click () es lo que está buscando. Puedes encontrar más eventos aquí .
fuente
Basado en la respuesta de Derek, verifiqué que
funciona como se espera incluso con modificadores de teclas. Y esto no es una API obsoleta, por lo que puedo ver. También puede verificar en esta página .
fuente
Puede usar elementFromPoint :
compatible con todos los navegadores: https://caniuse.com/#feat=element-from-point
fuente
Código JavaScript
código HTML
fuente