Ich habe:
var uri = window.location.href;
Das sieht vor http://example.com/something#hash
Was ist der beste und einfachste Weg, um den gesamten Weg ohne den zu bekommen #hash
?
uri = http://example.com/something#hash
nohash = http://example.com/something
Ich habe versucht, location.origin+location.pathname
was nicht in jedem Browser funktioniert. Ich habe versucht, location.protocol+'//'+location.host+location.pathname
eine Lösung zu verwenden, die für mich wie eine beschissene Lösung aussieht.
Was ist der beste und einfachste Weg, dies zu tun? Vielleicht frage ich nach location.hash und versuche dies vom uri zu substr ()?
#section
auf dieselbe Seite zu verlinken , setzen Sie einfach den Link href auf#section
. Sie müssen nicht die Basis-URL der Seite abrufen und dann den Hash am Ende verketten.Antworten:
location.protocol+'//'+location.host+location.pathname
ist die richtige Syntax, wenn Sie sich nicht für Portnummer oder Querystring interessierenWenn 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:"")
Sie können auch einfach eine machen
location.href.replace(location.hash,"")
Alternativ können Sie ein URL-Objekt erstellen :
const url = new URL("https://www.somepage.com/page.hmtl#anchor") //(location.href); console.log(url) url.hash=""; console.log(url)
quelle
.replace(location.hash,'')
ist brillant und genau das, wonach ich gesucht habe.var url = "http://example.com#example"; var lnk = document.createElement("a"); lnk.href=url; alert(lnk.hash);
var uri = window.location.href.split("#")[0]; // Returns http://example.com/something var hash = window.location.hash; // Returns #hash
quelle
"foo#bar#baz".split("#") == "bar"
location.hash
.location.href.replace(location.hash,"")
quelle
(location+'').href.replace(location.hash,"")
funktioniert in Firefox (Ort ist keine reguläre Zeichenfolge)location.hash
'' wenn URL somehting.com/#location.hash
es an anderer Stelle in der URL enthalten ist. Zum Beispiel " example.com/#example ". Weillocation.hash
das führende "#" enthält. Außer wenn der Hash leer ist, wie oben ausgeführt.Ist der universelle Weg auch der kleinere?
location.href.split(/\?|#/)[0]
quelle
Kürzere Lösungen:
ohne Abfragezeichenfolge und Hash
location.href.split(location.search||location.hash||/[?#]/)[0]
nur ohne Hash
location.href.split(location.hash||"#")[0]
(Ich benutze normalerweise den ersten)
quelle