Estoy tratando de obtener ctrl + clic izquierdo del mouse para realizar un determinado comportamiento y obtener diferentes resultados para diferentes navegadores.
Dado que en los sistemas mac ctrl+lmb se traduce como clic derecho, parece que tengo que capturar el evento 'contextmenu' y luego verificar si en realidad es ctrl+lmb.
Pero incluso superando eso, para el siguiente script, obtengo resultados diferentes entre Chrome y Safari.
En la consola de Chrome veo 'Clic en ctrl + clic izquierdo' al hacer clic, y en Safari veo este mensaje dos veces: mientras se mantiene presionado ctrl, cuando hago clic en lmb y cuando lo suelto.
box = document.getElementById("thebox").addEventListener('click',(event) => { if (event.ctrlKey) { console.log('Clicked ctrl + left click') return; } console.log('Clicked left click'); }) box = document.getElementById("thebox").addEventListener('contextmenu',(event) => { event.preventDefault(); if (event.buttons === 2 || event.buttons === 0) { console.log("Clicked right click"); } else if (event.buttons === 1) { console.log("Clicked ctrl + left click"); } }) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="thebox" style='height: 100px; width: 100px; background-color: red;'></div> <script src='./index.js'></script> </body> </html>Siento que debería haber una solución más simple para tener un clic ctrl+lmb unificado en todos los navegadores, pero no puedo encontrarlo, ¿es realmente tan difícil?
Agradezco la ayuda.