2009-10-11 12 views
41

Próbuję napisać skrypt GreaseMonkey, w którym chcę znaleźć wszystkie linki, które są względnymi linkami. Wydawało mi się, że sposobem na to byłoby dopasowanie zawartości href do /^https?:///.Jak uzyskać "surową" zawartość href w JavaScript

Ale stwierdzam, że kiedy uzyskuję dostęp do atrybutu href anchor, zawsze jest on znormalizowany lub ugotowany do postaci zawierającej "http". Oznacza to, że jeżeli HTML zawiera:

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

dostępu

document.getElementById("rel").href 

powraca

http://example.com/relative/link 

Jak mogę uzyskać dostęp do surowych danych w atrybucie href?

Alternatywnie, czy istnieje lepszy sposób na znalezienie względnych linków?

+8

Wypróbowaliście element.getAttribute ("href")? –

+0

@Ionut, dlaczego nie dodasz tego jako odpowiedzi? – James

+0

J-P, na początku pytanie było nieco niejasne. W momencie opublikowania komentarza nie było jasne, czy próbował użyć metody 'getAttribute', czy tylko właściwości' href'. –

Odpowiedz

42

Wypróbuj zamiast tego getAttribute method.

+1

Niestety, IE7 wydaje się zwracać w pełni kwalifikowany adres URL nawet przy takim podejściu. –

24

Typowy. Sam to wymyśliłem prawie natychmiast po opublikowaniu pytania.

zamiast:

anchor.href 

zastosowanie:

anchor.getAttribute("href") 

Oczywiście, zajęło mi więcej czasu, aby wpisać tę odpowiedź niż zajęło wszyscy inni na nie odpowiedzieć. (Cholera, wy ludzie jesteście szybcy.)