Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript window location href without hash?

I have:

var uri = window.location.href; 

That provides http://example.com/something#hash

What's the best and easiest way to get the entire path without the #hash?

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

I tried using location.origin+location.pathname which doesn't work in every browser. I tried using location.protocol+'//'+location.host+location.pathname which looks like kind of a crappy solution to me.

What is the best and easiest way to do so? maybe I query for location.hash and try to substr() this from the uri?

like image 204
matt Avatar asked Apr 28 '11 12:04

matt


People also ask

How do you remove hash?

To remove the hash URL, you can use the replaceState method on the history API to remove the hash location. Example: HTML.

How do you pass data using Windows location href?

Using window. location. href it's not possible to send a POST request. What you have to do is to set up a form tag with data fields in it, set the action attribute of the form to the URL and the method attribute to POST, then call the submit method on the form tag.

Does window location href return a string?

The Location href property returns a string which contains the entire URL of the page, including the protocol.

What is hash in window location?

The hash property of the Location interface returns a string containing a '#' followed by the fragment identifier of the URL — the ID on the page that the URL is trying to target. The fragment is not percent-decoded. If the URL does not have a fragment identifier, this property contains an empty string, "" .


2 Answers

location.protocol+'//'+location.host+location.pathname is the correct syntax if you do not care about port number or querystring

If you do care:

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

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

or

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

You can also just do a location.href.replace(location.hash,"")
It will remove EVERYTHING from the FIRST # and on regardless of other hash characters in the string

Alternatively create a URL object:

const url = new URL("https://www.somepage.com/page.hmtl#anchor") //(location.href); console.log(url) url.hash=""; console.log(url)
like image 130
mplungjan Avatar answered Sep 29 '22 00:09

mplungjan


var uri = window.location.href.split("#")[0];  // Returns http://example.com/something  var hash = window.location.hash;  // Returns #hash 
like image 33
Nick Brunt Avatar answered Sep 28 '22 23:09

Nick Brunt