Estoy desarrollando una aplicación de JavaScript que necesita activar el evento mousemove , y estoy usando tampermonkey para "incrustarlo" en sitios web para probar si funciona en ellos. En un sitio web, el evento mousemove simplemente está bloqueado (no sé por qué) e incluso console.log dentro de este evento no se muestra. Parece que este evento nunca se ha activado (el sitio web lo ignora).
¿Es posible "anular" eventos y bloquearlos? Si es así, ¿cómo puedo anular esta acción y habilitar mi evento mousemove específico?
Este script no funcionará:
document.addEventListener("mousemove", function(e) { e = e || window.event; e.stopPropagation(); console.log("[HELLO] Is it moving?!"); }, false);(el resultado será... nada. esto no se registrará)
Actualización Establecieron window.onmousemove como null . ¿Hay alguna forma de revertir esto?
Si algún otro controlador de eventos llamó stopPropagation() en el evento, no se propagará hasta el nivel del document durante la fase de "burbuja".
Sin embargo, puede hacer que su controlador de eventos se llame antes, ejecutándolo en la fase de "captura". Simplemente cambie el tercer argumento de false a true . Esto resolverá la mayoría de los problemas, excepto si se agregó algún otro controlador de eventos en el document antes que el suyo y llama a stopImmediatePropagation en el evento. Pero esto es raro.
Consulte Burbujeo y captura explicados para obtener más información general.
Si puede ejecutar su código antes que el de ellos, puede guardar la función
window.onmousemove = function() { console.log("moving",new Date()) }; window.myMove = window.onmousemove; document.getElementById("x").addEventListener("click",function() { window.onmousemove=null }) document.getElementById("y").addEventListener("click",function() { window.onmousemove=myMove; }) <button type="button" id="x">Turn off mousemove</button> <button type="button" id="y">Turn mousemove back on</button>