2012-07-04 29 views
5

Estoy buscando una forma de recuperar la parte #anchor de la URL actual con JavaScript. Por ejemplo:Obtener el #id de la URL actual

http://my-page.com/index.html#contact-us

volvería contact-us.

Podría dividir el URI en el eventual # y luego tomar la última pieza, pero estoy buscando una sugerencia más agradable y más clara. Una función nativa (jQuery?) Sería genial, pero supongo que estoy pidiendo demasiado.

Respuesta

11

Uso location.hash:

location.hash.slice(1); 

Se inicia con una #, por lo tanto, .slice(1). Dada una cadena arbitraria, se puede utilizar la función de análisis de URL incorporada mediante la creación de un elemento <a>, y establecer el href, a continuación, leer otros propiedades, tales como , hostname, hash, etc. ejemplo jQuery:

$('a').attr('href', url)[0].hash; 
+2

ni '' splice' ni slice' es parte de 'String.prototype'. 'location.hash.substr (1)' haría el truco, sin embargo. – lonesomeday

+0

@lonesomeday Gracias, fue un error tipográfico en el código. La explicación usó el personaje correcto. EDITAR: ['String.prototype.slice'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice) en MDN. –

+1

'slice', por supuesto, es parte de' String.prototype'. Disculpas por mi idiotez. – lonesomeday

2

location.hash.replace(/^#/, "")

1

Si trabaja con una variable:

var url = "http://my-page.com/index.html#contact-us"; 

var hash = url.substring(url.indexOf("#") + 1); 
Cuestiones relacionadas