Javascript-Fensterstandort href ohne Hash?

Lesezeit: 3 Minuten

Benutzer-Avatar
matt

Ich habe:

var uri = window.location.href;

Das bietet http://example.com/something#hash

Was ist der beste und einfachste Weg, um den gesamten Pfad ohne die #hash?

uri    = http://example.com/something#hash
nohash = http://example.com/something

Ich habe versucht, mit location.origin+location.pathname was nicht in jedem Browser funktioniert. Ich habe versucht, mit location.protocol+'//'+location.host+location.pathname das sieht für mich nach einer beschissenen Lösung aus.

Wie geht das am besten und einfachsten? Vielleicht frage ich nach location.hash und versuche, dies aus dem uri zu substr()?

  • Übrigens, wenn Sie dies nur tun, um auf a zu verlinken #section Setzen Sie auf derselben Seite einfach den Link href auf #section. Sie müssen nicht die Basis-URL der Seite abrufen und dann den Hash am Ende verketten.

    – Webdesigner

    25. Februar 2013 um 6:59 Uhr

Benutzer-Avatar
mplungjan

location.protocol+'//'+location.host+location.pathname ist die richtige Syntax, wenn Sie sich nicht um die Portnummer oder den Abfragestring kümmern

Wenn es dich interessiert:

https://developer.mozilla.org/en/DOM/window.location

location.protocol+'//'+
  location.host+
  location.pathname+
 (location.search?location.search:"")

oder

location.protocol+'//'+
  location.hostname+
 (location.port?":"+location.port:"")+
  location.pathname+
 (location.search?location.search:"")

Du kannst auch einfach a machen location.href.replace(location.hash,"")

Es wird ALLES von der ERSTEN # entfernt, unabhängig von anderen Hash-Zeichen in der Zeichenfolge

Alternativ erstellen Sie eine URL-Objekt:

const url = new URL("https://www.somepage.com/page.hmtl#anchor") //(location.href);
console.log(url)
url.hash="";
console.log(url)

  • Sie haben dort die Abfragezeichenfolge (falls vorhanden) verloren

    – QUentin

    28. April 2011 um 12:03 Uhr


  • Scheint, als ob location.host den Port enthält.

    – Borgenk

    23. November 2011 um 13:33 Uhr

  • Das letzte bisschen über .replace(location.hash,'') ist brillant und genau das, wonach ich gesucht habe.

    Benutzer241244

    1. März 2014 um 8:06 Uhr

  • location.href.replace(location.hash,””) wird nicht richtig funktionieren, weil: beispiel.com#beispiel# wird ” als Hash geben; example.com#beispiel#a gibt ‘#a’ als Hash aus; window.location.href.split(‘#’)[0] ist eine richtige Lösung.

    – ZPiDER

    20. August 2015 um 17:04 Uhr


  • Die erste Lösung hat ein Problem: URLs wie https://example.com/foo? werden in solche ohne Fragezeichen umgewandelt. Manchmal verursacht dies Probleme. Ihre letzte Methode mit der URL Der Konstruktor scheint jedoch gut zu funktionieren, danke!

    – mgol

    28. Dezember 2021 um 22:32 Uhr

Benutzer-Avatar
Nick Brunt

var uri = window.location.href.split("#")[0];

// Returns http://example.com/something

var hash = window.location.hash;

// Returns #hash

  • Das Hash-Zeichen ist nicht im zweiten Teil dieses Arrays enthalten

    – Brian Leishmann

    11. Oktober 2016 um 18:41 Uhr

  • Ich habe eine Korrektur enthalten! 🙂

    – Höhle

    23. Mai 2017 um 17:26 Uhr

  • Das funktioniert nicht. "foo#bar#baz".split("#") == "bar"

    – rgov

    7. März 2018 um 15:59 Uhr


  • Für Hasch einfach verwenden location.hash.

    – Gipfel

    7. August 2018 um 9:09 Uhr

location.href.replace(location.hash,"")

  • (location+'').href.replace(location.hash,"") funktioniert in Firefox (Ort ist keine reguläre Zeichenfolge)

    – Taha Jahangir

    8. Oktober 2012 um 11:03 Uhr

  • Aber kümmere dich darum location.hash ist ”, wenn die URL somehting.com/# ist

    – Taha Jahangir

    8. Oktober 2012 um 11:05 Uhr

  • Überraschend für mich, wird dies nicht brechen, wenn location.hash an anderer Stelle in der URL enthalten ist. Zum Beispiel, “example.com/#beispiel“. Da location.hash enthält das führende “#”. Außer wenn der Hash leer ist, wie oben erwähnt.

    – Ben J

    7. März 2017 um 8:12 Uhr

  • location.hash enthält ALLES vom ERSTEN # bis zum Ende und ignoriert JEDE untergeordnete (illegale) URL-Zeichen wie # plungjan.name/SO/testhref.html – Ich habe getestet, weil meine Antwort abgelehnt wurde

    – mplungjan

    13. November 2021 um 13:43 Uhr

Benutzer-Avatar
Alain Beauvois

Ist der universelle Weg auch der kleinere?

location.href.split(/\?|#/)[0]

Kürzere Lösungen:

  • ohne Abfragezeichenfolge und Hash location.href.split(location.search||location.hash||/[?#]/)[0]

  • nur ohne hasch location.href.split(location.hash||"#")[0]

(Ich benutze normalerweise die erste)

Benutzer-Avatar
Roberto Novelo

ES2020:

let [uri, hash] = location.href.split("#");
console.log(uri, hash);

location.hash = "#myhash";

[uri, hash] = location.href.split("#");
console.log(uri, hash);

Benutzer-Avatar
Fred

Ich habe nach dieser Antwort gesucht:

`${window.location.origin}${window.location.pathname}${window.location.search}`

1179020cookie-checkJavascript-Fensterstandort href ohne Hash?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy