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:
- Los enfoques "normales" de hacer clic con el botón no funcionan en el script de Greasemonkey.
- Elegir y activar los controles correctos en un sitio impulsado por AJAX
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();