Mueva el puntero del mouse a una posición específica usando JavaScript

Sahil Bhosale 15 febrero 2024
  1. Cree una estructura HTML básica con algunos estilos CSS
  2. Use JavaScript para mover el puntero del mouse a una posición específica
  3. Conclusión
Mueva el puntero del mouse a una posición específica usando JavaScript

Tenga en cuenta que no hay forma de mover el puntero del mouse a una posición específica en JavaScript. La razón principal es que puede crear problemas de seguridad para los usuarios y dañar la experiencia del usuario.

En este artículo, crearemos un puntero de mouse falso o personalizado, que puede parecerse al puntero del mouse del sistema predeterminado, y luego moveremos su posición a una posición diferente usando JavaScript. Esta técnica de mover el puntero del mouse a una posición específica tiene fines de demostración y debe evitarse por completo en sitios web listos para producción.

Cree una estructura HTML básica con algunos estilos CSS

Crearemos dos botones en la pantalla (uno a la izquierda y otro a la derecha de la pantalla), y nuestro objetivo será cuando hagamos clic en el primer botón, el puntero del mouse se moverá automáticamente al segundo botón en el pantalla.

Primero, creamos dos elementos HTML dentro de nuestro HTML, una etiqueta img y otro el elemento div. La etiqueta img contendrá la imagen del cursor personalizado o falso que usaremos en lugar del cursor del mouse del sistema original.

Puede usar cualquier imagen del cursor del mouse que desee de Internet. El div tendrá dos botones, "button 1" y "button 2" dentro de él.

También daremos una id a todos estos elementos para que podamos hacer referencia a ellos dentro de JavaScript y diseñarlos dentro de CSS.

Fragmento de código - HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Move mouse pointer</title>
    <style>
        * {
            cursor: none;
        }
        .block{
            display: flex;
            justify-content: space-between;
        }
        img {
            pointer-events: none;
            position: absolute;
        }
    </style>
</head>

<body>
    <img id="cursor" src="./mouse_cursor.png" width="16" height="22" />

    <div class="block">
        <button id="btn1">Button 1</button>
        <button id="btn2">Button 2</button>
    </div>
</body>
</html>

Dentro del CSS, ocultamos el puntero del mouse del sistema original de toda la página con la ayuda de la propiedad CSS cursor: none dentro del asterisco (*), también conocido como el selector universal CSS. Luego agregaremos un flexbox al elemento div para que pueda haber un espacio entre ellos.

En la etiqueta img, nuestro cursor personalizado agregará la propiedad pointer-events: none para que no se le puedan aplicar eventos de puntero. Puede obtener más información sobre pointer-events en MDN, y lo haremos absoluto para que podamos moverlo a cualquier parte de la pantalla.

Use JavaScript para mover el puntero del mouse a una posición específica

Ahora implementemos la funcionalidad para ello usando JavaScript. Primero, tomaremos todos los elementos del cursor, btn1 y btn2, usando el método getElementById() dentro del JavaScript.

Como queremos mover el cursor del mouse a una posición específica, en este caso, en el botón 2, primero tenemos que agarrar las posiciones (izquierda, arriba, ancho, alto) del botón 2 para que cuando hagamos clic en botón 1, el puntero del ratón se moverá automáticamente al botón 2.

Para ello, utilizaremos el método getBoundingClientRect() sobre el btn2, que nos proporcionará un objeto que contiene varias posiciones y dimensiones como izquierda, arriba, abajo, ancho, alto, etc., y almacenaremos este objeto dentro de una variable llamada rect. Luego calcularemos la “posición final X” y la “posición final Y” del “botón 2”, para que podamos llevar el puntero del mouse al centro del “botón 2” al hacer clic en el “botón 1”.

Nuestro puntero de mouse personalizado no se mueve en la pantalla en esta posición. Para que se mueva libremente en el navegador, debemos agregar un detector de eventos al objeto de la ventana.

Este método toma dos parámetros, el primero es el tipo de evento sobre el que queremos ejecutar una función, y el segundo es la función misma que se ejecutará cuando se dispare ese evento.

Como queremos mover el puntero del mouse personalizado, usaremos el evento mousemove como nuestro primer parámetro, y luego dentro de nuestra función de devolución de llamada, tomaremos las coordenadas clientX y clientY, y luego estaremos asignando colóquelo en la posición “izquierda” y “superior” de nuestro puntero de mouse personalizado, como se muestra a continuación.

No olvide agregar "px" al final; de lo contrario, no funcionará.

Fragmento de código - JavaScript:

let cursor = document.getElementById('cursor');
let btn1 = document.getElementById('btn1');
let btn2 = document.getElementById('btn2');

let rect = btn2.getBoundingClientRect();
let finalPositionX = rect.left + rect.width / 2;
let finalPositionY = rect.top + rect.height / 2;

// Moving our custom mouse pointer
window.addEventListener('mousemove', (e) => {
  x = e.clientX;
  y = e.clientY;

  cursor.style.left = x + 'px';
  cursor.style.top = y + 'px';
});

btn1.addEventListener('mouseup', (e) => {
  cursor.style.left = finalPositionX + 'px';
  cursor.style.top = finalPositionY + 'px';
})

En esta etapa, el cursor del ratón personalizado se moverá como el cursor del ratón normal. Ahora moveremos el cursor del mouse personalizado a una posición específica.

Para eso, agregaremos un evento mouseup en btn1 y luego colocaremos los cursores del mouse en las posiciones izquierda y superior con las posiciones finalPositionX y finalPositionY.

Producción:

javascript mover el mouse a una posición específica

Conclusión

No hay una forma directa de cambiar la posición del mouse usando JavaScript, ya que tiene algunas desventajas. Pero siempre hay formas diferentes y no oficiales de hacer las cosas en la programación.

Para resolver el problema de mover el puntero del mouse a una posición específica, debemos ocultar el puntero del mouse original. Luego, tenemos que crear nuestro puntero de mouse personalizado y escribir un código JavaScript para que se mueva a una posición específica.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Artículo relacionado - JavaScript MouseEvent