2017-07-05 3 views
1

Ich habe einen Link wie folgt:Ermitteln, was der Pfadname eines Links wäre, wenn er folgt?

<a href="./somepage.html">This link goes to some page.</a> 

Ich habe eine Variable, die die pathname der Seite nach besuchen die Seite enthält. Es sieht so aus:

/C:/work/so/test/somepage.html 

ich zur Zeit ihnen bin zu vergleichen, indem Sie diese:

curLocation = window.location.pathname; 
pathname = curLocation.substring(0, curLocation.lastIndexOf('/') + 1) + elements[i].getAttribute('href'); 
var oldPathname = '/C:/work/so/test/somepage.html'; //pretend this variable is already set, and not hardcoded 
if(pathname == oldPathname) { 
    //do stuff 
} 

jedoch, das nicht funktioniert, weil pathname wird gleich diesen:

/C:/work/so/test/./somepage.html 

... aber oldPathname (der tatsächliche resultierende Pfad nach dem Navigieren dieser Verbindung) wird wie folgt aussehen:

/C:/work/so/test/somepage.html 

Wie kann ich zuverlässig prüfen, ob diese beiden Verbindungen identisch sind? Gibt es eine Möglichkeit, durch einen Link zu "simulieren" und herauszufinden, was das Ergebnis window.location.pathname wäre?

+0

Pfadname = pathname.replace ('./', ''); – Angels

+0

@Angels Nun, das war nur ein Beispiel, ich weiß nicht, in welchen anderen Fällen eine URL die gleiche ist, aber nicht, wenn sie an das aktuelle Verzeichnis angehängt wird. – Clonkex

+0

anstelle von 'elements [i] .getAttribute ('href')' usage 'elements [i] .href'? Dies hat den vollen Pfad –

Antwort

1

Verwenden Sie einfach .href statt getAttribute ('href')

document.querySelectorAll('a').forEach(a => console.log(a.href))
<a href="./link1.html">Link 1</a> 
 
<a href="../link2.html">Link 2</a> 
 
<a href="../folder/link3.html">Link 3</a>

Verwandte Themen