2009-10-11 14 views
41

Estoy tratando de escribir un script de GreaseMonkey en el que quiero encontrar todos los enlaces que son enlaces relativos. Me pareció que la forma de hacerlo sería hacer coincidir los contenidos de href contra /^https?:///.Cómo obtener contenidos href "en bruto" en JavaScript

Pero me parece que cuando accedo al atributo href del ancla, siempre se normaliza o cocina en un formulario que contiene "http". Es decir, si el código HTML contiene:

<a id="rel" href="/relative/link">inner</a> 

acceder a

document.getElementById("rel").href 

vuelve

http://example.com/relative/link 

¿Cómo puedo acceder a los datos en bruto en el atributo href?

¿Alternativamente, hay una mejor manera de encontrar enlaces relativos?

+8

¿Has probado element.getAttribute ("href")? –

+0

@Ionut, ¿por qué no agregaste eso como respuesta? – James

+0

J-P, la pregunta era un poco confusa al principio. En el momento en que publiqué mi comentario, no estaba claro si intentó usar el método 'getAttribute' o simplemente la propiedad' href'. –

Respuesta

42

Pruebe el getAttribute method en su lugar.

+1

Desafortunadamente, IE7 parece devolver la URL totalmente calificada incluso con este enfoque. –

24

Typical. Lo descubrí casi inmediatamente después de publicar la pregunta.

en lugar de:

anchor.href 

uso:

anchor.getAttribute("href") 

Por supuesto, me tomó más tiempo para escribir esta respuesta de lo que tardó todo el mundo para responder a ella. (Maldición, tu gente es rápida)

Cuestiones relacionadas