Eu sei sobre o document.form.button.click()
método No entanto, eu gostaria de saber como simular o onclick
evento.
Encontrei esse código em algum lugar aqui no Stack Overflow, mas não sei como usá-lo :(
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);
}
Como acionar um evento de clique do mouse usando JavaScript?
javascript
dom-events
mouseclick-event
Nok Imchen
fonte
fonte
Respostas:
(Versão modificada para fazê-lo funcionar sem prototype.js)
Você pode usá-lo assim:
Note que como um terceiro parâmetro você pode passar em 'opções'. As opções que você não especifica são extraídas das opções padrão (consulte a parte inferior do script). Portanto, se você, por exemplo, deseja especificar coordenadas do mouse, pode fazer algo como:
Você pode usar uma abordagem semelhante para substituir outras opções padrão.
Os créditos devem ir para kangax . Aqui está a fonte original (específica para prototype.js).
fonte
Aqui está uma função JavaScript pura que simula um clique (ou qualquer evento do mouse) em um elemento de destino:
Aqui está um exemplo de trabalho: http://www.spookandpuff.com/examples/clickSimulation.html
Você pode simular um clique em qualquer elemento no DOM . Algo como
simulatedClick(document.getElementById('yourButtonId'))
iria funcionar.Você pode passar um objeto
options
para substituir os padrões (para simular qual botão do mouse você deseja, se Shift/ Alt/ Ctrlestá pressionado etc.) As opções aceitas são baseadas na API MouseEvents .Eu testei no Firefox, Safari e Chrome. O Internet Explorer pode precisar de tratamento especial, não tenho certeza.
fonte
type: options.click || 'click'
que provavelmente deveria sertype: options.type || 'click'
.<div id = "outer"><div id = "inner"></div></div> simulatedClick(document.getElementById('outer'));
não clicará no elemento interno.div
contivesse um botão ou um link - você não desejaria um clique no exterior para acionar um clique no elemento interno.||
operador para casos como esse, porque oopscanBubble:options.canBubble || true,
sempre avalia como verdadeiro agora e, aparentemente, ninguém notará isso por 5 anos.Uma maneira mais fácil e padrão de simular um clique do mouse seria usar diretamente o construtor de eventos para criar um evento e enviá-lo.
Demo: http://jsfiddle.net/DerekL/932wyok6/
Isso funciona em todos os navegadores modernos.
MouseEvent.initMouseEvent
Infelizmente, para navegadores antigos, incluindo o IE, terá que ser usado, embora esteja obsoleto.fonte
Na documentação da Mozilla Developer Network (MDN), HTMLElement.click () é o que você está procurando. Você pode descobrir mais eventos aqui .
fonte
Com base na resposta de Derek, verifiquei que
funciona como esperado, mesmo com modificadores de chave. E essa não é uma API reprovada, pelo que pude ver. Você também pode verificar nesta página .
fonte
Você pode usar o elementFromPoint :
suportado em todos os navegadores: https://caniuse.com/#feat=element-from-point
fonte
Código JavaScript
Código HTML
fonte