Tengo un problema con esta pieza de JavaScript. El problema es que cuando está habilitado, algunos de mis enlaces no funcionan. Los enlaces que abren una página web funcionan bien, son los enlaces mailto: y tel: los que no funcionarán. ¿Alguien puede ayudarme a solucionar este problema? Gracias.
const allLinks = document.querySelectorAll("a:link"); allLinks.forEach(function (link) { link.addEventListener("click", function (e) { // conditional for preventDefault if (link.hasAttribute("target") === false) { e.preventDefault(); } else { if (link.getAttribute("target") !== "_blank") { e.preventDefault(); } } const href = link.getAttribute("href"); // Scroll back to top if (href === "#") window.scrollTo({ top: 0, behavior: "smooth", });Su código impide que se siga el enlace si no tiene un atributo de destino establecido en "_blank" .
Los enlaces de teléfono y mailto no suelen tener un objetivo. Como mencionó @The Fool , esto parece sospechoso y no está claro cómo esperaba que funcionara.
Probablemente pueda solucionarlo agregando lo siguiente en la parte superior de su controlador.
if (link.href.startsWith("tel:") || link.href.startsWith("mailto:")) { return }