Domanda

Sto cercando di scrivere uno script GreaseMonkey in cui voglio trovare tutti i link che sono collegamenti relativi. Mi sembrava che il modo per farlo sarebbe quello di abbinare il contenuto del href contro /^https?:///.

Ma trovo che quando accedo attributo href dell'ancora, è sempre normalizzata o cotte in una forma che contiene "http". Cioè, se il codice HTML contiene:

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

Accesso

document.getElementById("rel").href

ritorna

http://example.com/relative/link

Come posso accedere ai dati grezzi in href?

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

È stato utile?

Soluzione

Prova il metodo di href="https://developer.mozilla.org/en/DOM/element.getAttribute" rel="noreferrer"> getAttribute .

Altri suggerimenti

tipica. Ho capito io quasi subito dopo la pubblicazione della questione.

invece che:

anchor.href

utilizzo:

anchor.getAttribute("href")

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

Ecco un frammento di codice si potrebbe correre per provare.

const anchors = document.getElementsByTagName('a');

for (let anchor of anchors) {
  let hrefFullPath = anchor.href;
  let hrefRelativePath = anchor.attributes.href.value;

  console.log('hrefFullPath', hrefFullPath);
  console.log('hrefRelativePath', hrefRelativePath);
}

Diciamo, siete a http://localhost:4200, e questo è il documento come avete dimostrato per la questione.

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

valore di attributo di questo ancora di href è:

document.getElementById('rel').attributes.href.value => /relative/link

E valore href di ancoraggio è:

document.getElementById('rel').href =>  http://localhost:4200/relative/link

Spero che aiuta.

scroll top