2009-10-11 3 views
41

Ich versuche, ein GreaseMonkey-Skript zu schreiben, in dem ich alle Links finden möchte, die relative Links sind. Es schien mir, dass der Weg dazu wäre, den Inhalt von href gegen /^https?:/// anzupassen.Wie bekomme ich "rohe" href Inhalte in JavaScript

Aber ich finde, dass, wenn ich auf das href-Attribut des Ankers zugreife, es immer normalisiert oder in eine Form gekocht wird, die "http" enthält. Das heißt, wenn die HTML enthält:

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

document.getElementById("rel").href 

kehrt

http://example.com/relative/link 

Zugriff Wie kann ich die Rohdaten im href-Attribut zugreifen?

Gibt es alternativ eine bessere Möglichkeit, relative Links zu finden?

+8

Haben Sie element.getAttribute ("href") ausprobiert? –

+0

@Ionut, warum hast du das nicht als Antwort hinzugefügt? – James

+0

J-P, die Frage war am Anfang etwas unklar. Zu der Zeit, als ich meinen Kommentar gepostet habe, war nicht klar, ob er versucht hat, die 'getAttribute'-Methode oder nur die' href'-Eigenschaft zu verwenden. –

Antwort

42

Versuchen Sie stattdessen die getAttribute method.

+1

Leider scheint IE7 die vollständig qualifizierte URL auch bei diesem Ansatz zurückzugeben. –

24

Typisch. Ich habe es fast unmittelbar nach dem Stellen der Frage selbst herausgefunden.

statt:

anchor.href 

Verwendung:

anchor.getAttribute("href") 

Natürlich ist es mir länger gedauert hat diese Antwort zu geben, als es jeder nahm es sonst zu beantworten. (Verdammt, Sie sind schnell.)