ejemplo javascript mouseevent greasemonkey userscripts tampermonkey

javascript - ejemplo - ¿Simulando una secuencia de mousedown, click, mouseup en Tampermonkey?



mouseup javascript (2)

Bit optimizado

function fireMouseEvents( query, eventNames ){ var element = document.querySelector(query); if(element && eventNames && eventNames.length){ for(var index in eventNames){ var eventName = eventNames[index]; if(element.fireEvent ){ element.fireEvent( ''on'' + eventName ); } else { var eventObject = document.createEvent( ''MouseEvents'' ); eventObject.initEvent( eventName, true, false ); element.dispatchEvent(eventObject); } } } }

Dispararías así

fireMouseEvents("a[href*=''stackoverflow'']",[''mouseover'',''mousedown'',''mouseup'',''click'']);

Me gustaría simular un clic completo no solo

document.getElementsByClassName()[0].click();

¿Cómo puedo hacer eso? Todos los resultados de la búsqueda parecen ser sobre el manejo de dichos eventos, no desencadenándolos.


Enviar eventos del mouse Al igual que:

//--- Get the first link that has "" in its URL. var targetNode = document.querySelector ("a[href*='''']"); if (targetNode) { //--- Simulate a natural mouse-click sequence. triggerMouseEvent (targetNode, "mouseover"); triggerMouseEvent (targetNode, "mousedown"); triggerMouseEvent (targetNode, "mouseup"); triggerMouseEvent (targetNode, "click"); } else console.log ("*** Target node not found!"); function triggerMouseEvent (node, eventType) { var clickEvent = document.createEvent (''MouseEvents''); clickEvent.initEvent (eventType, true, true); node.dispatchEvent (clickEvent); }

Eso funciona si la página web está cargada estáticamente. Si la página web está impulsada por AJAX , use una técnica como en:

Tener cuidado:
El código de pregunta tiene un error. Necesita pasar un nombre de clase a esa función. Al igual que:

document.getElementsByClassName ("SomeClassName")[0].click();