Entonces tengo mi sitio web, un sitio web sin recargar entre cambios de sitio. Por razones de SEO, mis enlaces se ven así:
<a href="/site2" id="viewmore">View more</a> <script> // code is strongly simplified, for more clarity document.getElementById("viewmore").addEventListener("click",function(e) { e.preventDefault(); myHandler.goTo(e.currentTarget.href); }); </script>myHandler es el controlador del sitio en este caso.
Si hago clic en la tecla de acceso directo para abrir un enlace en una nueva pestaña (en Mac es CMD+Click), no funciona, ya que se evita el evento.
¿Cómo verificar si el enlace debe abrirse en una nueva pestaña o no? (Compruebe si la tecla de acceso rápido está presionada o no)
No estoy seguro de haberlo entendido, pero prueba esto
document.getElementById("viewmore").addEventListener("click", (e) => { // ctrlKey / altKey / shiftKey if (e.ctrlKey) myHandler.goTo(e.currentTarget.href); else e.preventDefault(); });Puede almacenar el estado de la clave CMD en una variable y verificarlo cuando se hace clic en el enlace.
let isCmdPressed = false; document.addEventListener("keydown",(e)=>{ if (e.key == "Meta"){ isCmdPressed = true; } }); document.addEventListener("keyup",(e)=>{ if (e.key == "Meta"){ isCmdPressed = false; } }); document.getElementById("viewmore").addEventListener("click",function(e) { if (!isCmdPressed){ e.preventDefault(); myHandler.goTo(e.currentTarget.href); } });