Así que tengo algo como esto en mi html:
<a id="one" href="/index.html"> HOME </a> <a id="two" href="/something.html"> SOMETHING </a> <a id="three" href="/again.html"> AGAIN </a>y si, por ejemplo, el usuario está en la página vinculada "..../index.html" e intenta hacer clic en el botón de enlace "INICIO", no hace nada o redirecciona falsamente o está deshabilitado para que se pueda hacer clic, lo mismo ocurre con otros botones href si el usuario ya está en la página a la que redireccionan los botones, y el usuario intenta hacer clic en ellos, he estado buscando en todas partes, pero todas las soluciones para este problema requieren que use JQuery, y me gustaría no usar bibliotecas tanto como sea posible , alguna solución?
Para simplificar, agregue una clase a todos los enlaces de menú en los que desea este comportamiento
<a class="locationLink" id="one" href="/index.html"> HOME </a> <a class="locationLink" id="two" href="/something.html"> SOMETHING </a> <a class="locationLink" id="three" href="/again.html"> AGAIN </a>Y comprueba esto:
var links = document.getElementsByClassName("locationLink"); for (var i = 0; i < links.length; i++) { var link = links[i]; if (link.classList.contains('locationLink') && location.href == link.href) { link.addEventListener("click", function (event) { event.preventDefault(); }); break; } }Básicamente, obtienes todos los enlaces y compruebas solo tus enlaces de ubicación. Si la URL actual es igual a href, agrega un detector de eventos que bloquea la navegación. Tal vez necesite algo de depuración en "ubicación.href == enlace.href" porque las URL relativas/absolutas (puede consultar https://stackoverflow.com/a/44547904/18452174 ) pero está funcionando.
Si su menú puede cambiar dinámicamente, puede probar este otro enfoque:
document.addEventListener("click", function (event) { var link = event.target; if (link.classList.contains('locationLink') && location.href == link.href) { link.addEventListener("click", function (event) { event.preventDefault(); }); } }, false);Haga lo mismo, pero verifique la condición en cada documento, haga clic en lugar solo una vez en la carga del documento.