javascriptlocationsubstring

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?


Solution

  • 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.html#anchor") //(location.href);
    console.log(url)
    url.hash="";
    console.log(url)