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
mplungjan
location.protocol+'//'+location.host+location.pathname ist die richtige Syntax, wenn Sie sich nicht um die Portnummer oder den Abfragestring kümmern
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
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
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]
Ü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