Último segmento de URL con JavaScript
¿Cómo obtengo el último segmento de una URL? Tengo el siguiente script que muestra la URL completa de la etiqueta de anclaje en la que se hizo clic:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Si la URL es
http://mywebsite/folder/file
¿Cómo consigo que solo muestre la parte "archivo" de la URL en el cuadro de alerta?
También puedes usar la función lastIndexOf() para localizar la última aparición del /
carácter en tu URL, luego la función substring() para devolver la subcadena comenzando desde esa ubicación:
console.log(this.href.substring(this.href.lastIndexOf('/') + 1));
De esa manera, evitará crear una matriz que contenga todos sus segmentos de URL, como split()
lo hace.
var parts = 'http://mywebsite/folder/file'.split('/');
var lastSegment = parts.pop() || parts.pop(); // handle potential trailing slash
console.log(lastSegment);
window.location.pathname.split("/").pop()
Las otras respuestas pueden funcionar si el camino es simple y consta únicamente de elementos de camino simples. Pero cuando también contiene parámetros de consulta , se rompen.
Es mejor utilizar el objeto URL para esto para obtener una solución más sólida. Es una interpretación analizada de la URL actual:
Aporte:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
const segments = new URL(href).pathname.split('/');
const last = segments.pop() || segments.pop(); // Handle potential trailing slash
console.log(last);
Producción: 'boo'
Esto funciona para todos los navegadores comunes. Sólo nuestro IE moribundo no admite eso (y no lo hará) . Sin embargo, para IE hay un polyfills disponible (si es que te importa ).
Sólo otra solución con expresiones regulares.
var href = location.href;
console.log(href.match(/([^\/]*)\/*$/)[1]);