3 Stimmen

Was macht dieser JavaScript-Regularausdruck-Code bei der Behandlung von URLs?

Ich betrachte den Code eines anderen und als JavaScript-Neuling und insbesondere als regulärer Ausdrucks-Neuling kann ich nicht herausfinden, was die folgenden Zeilen tun:

var url = sel.anchorNode.parentNode.href;
var match = self.location.href.replace(/\/$/i, '');
var replaced = url.replace(match,'');

Ich lese es als:

  1. Setze die Variable url auf den href-Wert des Elternknotens des aktuell ausgewählten Knotens
  2. Setze die Variable match auf die aktuelle URL des Browsers mit dem abschließenden '/' entfernt (falls vorhanden)
  3. Setze die Variable replaced auf den in 1. zurückgegebenen String, bei dem der in 2. zurückgegebene String entfernt wurde

Wenn ich es richtig lese, kann ich einfach nicht herausfinden, wie es jemals etwas tun würde. Es gibt keine Situation, an die ich denken kann, bei der der Elternknoten eines aktuell ausgewählten Knotens einen href-Wert hätte, der auf die aktuelle URL verweist.

Also denke ich, dass ich es falsch lese.

5voto

T.J. Crowder Punkte 948310

Weil das href-Eigenschaft eines Ankers eine vollständig aufgelöste URL ist (auch wenn das href-Attribut relativ ist), wird der aktuelle Pfad der Seite entfernt und Sie erhalten eine relative URL. Zum Beispiel auf der Seite:

http://beispiel.com/foo/bar/

mit einem Link wie

...

... bekommen Sie das href vom Anker, das ist:

http://beispiel.com/foo/bar/nifty.html

...und dann entfernen Sie http://beispiel.com/foo/bar daraus, und erhalten:

/nifty.html

In diesem Fall ist das wahrscheinlich nicht das, was Sie tatsächlich möchten. :-) Ich muss zugeben, dass ich nicht sehe, wie der Code, ohne Kontext, nützlich ist, aber manchmal ist der Kontext König...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X