2009-10-11 10 views
41

Sto provando a scrivere uno script GreaseMonkey in cui voglio trovare tutti i collegamenti che sono relativi. Mi è sembrato che il modo per farlo sarebbe quello di far corrispondere il contenuto di href allo /^https?:///.Come ottenere il contenuto href "raw" in JavaScript

Ma trovo che quando accedo all'attributo href dell'ancora, è sempre normalizzato o cotto in un modulo che contiene "http". Cioè, se il codice HTML contiene:

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

accesso

document.getElementById("rel").href 

rendimenti

http://example.com/relative/link 

Come posso accedere ai dati grezzi in href?

In alternativa, c'è un modo migliore per trovare i collegamenti relativi?

+8

Avete provato element.getAttribute ("href")? –

+0

@Ionut, perché non lo hai aggiunto come risposta? – James

+0

J-P, la domanda era un po 'oscura all'inizio. All'epoca in cui ho postato il mio commento non era chiaro se avesse provato ad usare il metodo 'getAttribute' o semplicemente la proprietà' href'. –

risposta

42

Provare invece il getAttribute method.

+1

Sfortunatamente, IE7 sembra restituire l'URL completo anche con questo approccio. –

24

Tipico. L'ho capito subito dopo aver postato la domanda.

invece di:

anchor.href 

uso:

anchor.getAttribute("href") 

Certo, mi c'è voluto più tempo per inserire questa risposta quello che ha preso tutti gli altri a rispondere. (Accidenti, voi persone siete veloci.)