dougoftheabaci
dougoftheabaci

Reputation:

Get the current URL with JavaScript?

All I want is to get the website URL. Not the URL as taken from a link. On the page loading I need to be able to grab the full, current URL of the website and set it as a variable to do with as I please.

Upvotes: 3819

Views: 3907592

Answers (26)

Nikhil Agrawal
Nikhil Agrawal

Reputation: 26538

URL Info Access

JavaScript provides you with many methods to retrieve and change the current URL, which is displayed in the browser's address bar. All these methods use the Location object, which is a property of the Window object. You can read the current Location object by reading window.location:

let currentLocation = window.location;

Basic URL Structure

<protocol>//<hostname>:<port>/<pathname><search><hash>
  • protocol: Specifies the protocol name be used to access the resource on the Internet. (HTTP (without SSL) or HTTPS (with SSL))

  • hostname: Host name specifies the host that owns the resource. For example, www.stackoverflow.com. A server provides services using the name of the host.

  • port: A port number used to recognize a specific process to which an Internet or other network message is to be forwarded when it arrives at a server.

  • pathname: The path gives info about the specific resource within the host that the Web client wants to access. For example, /index.html.

  • search: A query string follows the path component, and provides a string of information that the resource can utilize for some purpose (for example, as parameters for a search or as data to be processed).

  • hash: The anchor portion of a URL, includes the hash sign (#).

With these Location object properties you can access all of these URL components and what they can set or return:

  • href - the entire URL - i.e. window.location.href
  • protocol - the protocol of the URL
  • host - the hostname and port of the URL
  • hostname - the hostname of the URL
  • port - the port number the server uses for the URL
  • pathname - the path name of the URL
  • search - the query portion of the URL
  • hash - the anchor portion of the URL
  • origin - the window.location.protocol + '//' + window.location.host

Upvotes: 906

Weilory
Weilory

Reputation: 3121

// http://127.0.0.1:8000/projects/page/2?name=jake&age=34
let url = new URL(window.location.href);
/*
hash: ""

host: "127.0.0.1:8000"

hostname: "127.0.0.1"

href: "http://127.0.0.1:8000/projects/page/2?username=jake&age=34"

origin: "http://127.0.0.1:8000"

password: ""

pathname: "/projects/page/2"

port: "8000"

protocol: "http:"

search: "?name=jake&age=34"

username: ""
*/

url.searchParams.get('name')
// jake

url.searchParams.get('age')
// 34

url.searchParams.get('gender')
// null

Upvotes: 25

Bhaskar Bhatt
Bhaskar Bhatt

Reputation: 1467

You can get the current URL location with a hash tag by using:

JavaScript:

// Using href
var URL = window.location.href;

// Using path
var URL = window.location.pathname;

jQuery:

$(location).attr('href');

Upvotes: 21

Blackjack
Blackjack

Reputation: 1112

Simply use this:

document.URL

or this:

window.location.href

Upvotes: 7

Hitesh Sahu
Hitesh Sahu

Reputation: 45140

window.location:

 Location {href: "https://stackoverflow.com/questions/1034621/get-the-current-url-with-javascript",
 ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ, …}

document.location:

  Location {href: "https://stackoverflow.com/questions/1034621/get-the-current-url-with-javascript", 
ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ
, …}

window.location.pathname:

"/questions/1034621/get-the-current-url-with-javascript"

window.location.href:

"https://stackoverflow.com/questions/1034621/get-the-current-url-with-javascript"

location.hostname:

"stackoverflow.com"

Upvotes: 14

Rohan Patil
Rohan Patil

Reputation: 1963

var currentPageUrlIs = "";
if (typeof this.href != "undefined") {
       currentPageUrlIs = this.href.toString().toLowerCase(); 
}else{ 
       currentPageUrlIs = document.location.toString().toLowerCase();
}

Upvotes: 11

Tmh
Tmh

Reputation: 1531

Open Developer Tools, type in the following in the console and press Enter.

window.location

Ex: Below is the screenshot of the result on the current page.

enter image description here

Upvotes: 55

Alireza
Alireza

Reputation: 104870

OK, getting the full URL of the current page is easy using pure JavaScript. For example, try this code on this page:

window.location.href;
// use it in the console of this page will return
// http://stackoverflow.com/questions/1034621/get-current-url-in-web-browser"

The window.location.href property returns the URL of the current page.

document.getElementById("root").innerHTML = "The full URL of this page is:<br>" + window.location.href;
<!DOCTYPE html>
<html>

<body>
  <h2>JavaScript</h2>
  <h3>The window.location.href</h3>
  <p id="root"></p>
</body>

</html>

Just not bad to mention these as well:

  • if you need a relative path, simply use window.location.pathname;

  • if you'd like to get the host name, you can use window.location.hostname;

  • and if you need to get the protocol separately, use window.location.protocol

  • also, if your page has hash tag, you can get it like: window.location.hash.

So window.location.href handles all in once... basically:

window.location.protocol + '//' + window.location.hostname + window.location.pathname + window.location.hash === window.location.href;
    //true

Also using window is not needed if already in window scope...

So, in that case, you can use:

location.protocol

location.hostname

location.pathname

location.hash

location.href

Get the current URL with JavaScript

Upvotes: 118

Siddhartha Mukherjee
Siddhartha Mukherjee

Reputation: 2951

To get the path, you can use:

http://www.example.com:8082/index.php#tab2?foo=789

Property                    Result
------------------------------------------
window.location.host        www.example.com:8082
window.location.hostname    www.example.com
window.location.port        8082
window.location.protocol    http:
window.location.pathname    index.php
window.location.href        http://www.example.com:8082/index.php#tab2
window.location.hash        #tab2
window.location.search      ?foo=789
window.location.origin      https://example.com

enter image description here

Upvotes: 29

Kamil Kiełczewski
Kamil Kiełczewski

Reputation: 92627

Short

location+''

let url = location+'';

console.log(url);

Upvotes: 4

Syed Nasir Abbas
Syed Nasir Abbas

Reputation: 1857

For complete URL with query strings:

document.location.toString()

For host URL:

window.location

Upvotes: 20

Programmer
Programmer

Reputation: 361

You have multiple ways to do this.

1:

location.href;

2:

document.URL;

3:

document.documentURI;

Upvotes: 6

VolkerK
VolkerK

Reputation: 96159

Use:

window.location.href

As noted in the comments, the line below works, but it is bugged for Firefox.

document.URL

See URL of type DOMString, readonly.

Upvotes: 4559

Sos.
Sos.

Reputation: 977

location.origin+location.pathname+location.search+location.hash;

and

location.href

does the same.

Upvotes: 6

Apollo Data
Apollo Data

Reputation: 1426

Nikhil Agrawal's answer is great, just adding a little example here you can do in the console to see the different components in action:

enter image description here

If you want the base URL without path or query parameter (for example to do AJAX requests against to work on both development/staging AND production servers), window.location.origin is best as it keeps the protocol as well as optional port (in Django development, you sometimes have a non-standard port which breaks it if you just use hostname etc.)

Upvotes: 10

curiosity
curiosity

Reputation: 844

if you are referring to a specific link that has an id this code can help you.

$(".disapprove").click(function(){
    var id = $(this).attr("id");

    $.ajax({
        url: "<?php echo base_url('index.php/sample/page/"+id+"')?>",
        type: "post",
        success:function()
        {
            alert("The Request has been Disapproved");
            window.location.replace("http://localhost/sample/page/"+id+"");
        }
    });
});

I am using ajax here to submit an id and redirect the page using window.location.replace. just add an attribute id="" as stated.

Upvotes: 1

Seph Reed
Seph Reed

Reputation: 11028

For those who want an actual URL object, potentially for a utility which takes URLs as an argument:

const url = new URL(window.location.href)

https://developer.mozilla.org/en-US/docs/Web/API/URL

Upvotes: 9

Ashish Kamble
Ashish Kamble

Reputation: 2627

Firstly check for page is loaded completely in

browser,window.location.toString();

window.location.href

then call a function which takes url, URL variable and prints on console,

$(window).load(function(){
   var url = window.location.href.toString();
   var URL = document.URL;
   var wayThreeUsingJQuery = $(location).attr('href');
   console.log(url);
   console.log(URL);
   console.log(wayThreeUsingJQuery );
});

Upvotes: 0

Christoph
Christoph

Reputation: 169723

Use window.location for read and write access to the location object associated with the current frame. If you just want to get the address as a read-only string, you may use document.URL, which should contain the same value as window.location.href.

Upvotes: 342

Sangeet Shah
Sangeet Shah

Reputation: 3097

To get the path, you can use:

console.log('document.location', document.location.href);
console.log('location.pathname',  window.location.pathname); // Returns path only
console.log('location.href', window.location.href); // Returns full URL

Upvotes: 47

Josip Ivic
Josip Ivic

Reputation: 3709

The way to get the current location object is window.location.

Compare this to document.location, which originally only returned the current URL as a string. Probably to avoid confusion, document.location was replaced with document.URL.

And, all modern browsers map document.location to window.location.

In reality, for cross-browser safety, you should use window.location rather than document.location.

Upvotes: 5

Maleen Abewardana
Maleen Abewardana

Reputation: 14572

In jstl we can access the current URL path using pageContext.request.contextPath. If you want to do an Ajax call, use the following URL.

url = "${pageContext.request.contextPath}" + "/controller/path"

Example: For the page http://stackoverflow.com/posts/36577223 this will give http://stackoverflow.com/controller/path.

Upvotes: 5

Khaled Harby
Khaled Harby

Reputation: 94

You can get the full link of the current page through location.href and to get the link of the current controller, use:

location.href.substring(0, location.href.lastIndexOf('/'));

Upvotes: 3

kishore
kishore

Reputation: 1748

  • Use window.location.href to get the complete URL.
  • Use window.location.pathname to get URL leaving the host.

Upvotes: 25

Dorian
Dorian

Reputation: 23999

Use: window.location.href.

As noted above, document.URL doesn't update when updating window.location. See MDN.

Upvotes: 32

Zanoni
Zanoni

Reputation: 31008

Gets the current page URL:

window.location.href

Upvotes: 316

Related Questions