Último segmento de URL con JavaScript

Resuelto oshirowanen asked hace 13 años • 30 respuestas

¿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?

oshirowanen avatar Jan 21 '11 18:01 oshirowanen
Aceptado

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.

Frédéric Hamidi avatar Jan 21 '2011 11:01 Frédéric Hamidi

var parts = 'http://mywebsite/folder/file'.split('/');
var lastSegment = parts.pop() || parts.pop();  // handle potential trailing slash

console.log(lastSegment);
Expandir fragmento

Tim van Oostrom avatar Oct 28 '2012 11:10 Tim van Oostrom
window.location.pathname.split("/").pop()
Dblock247 avatar Nov 21 '2016 16:11 Dblock247

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 ).

Sebastian Barth avatar Aug 10 '2018 23:08 Sebastian Barth

Sólo otra solución con expresiones regulares.

var href = location.href;
console.log(href.match(/([^\/]*)\/*$/)[1]);
Avirtum avatar Apr 20 '2016 10:04 Avirtum