JavaScript로 현재 URL을 얻으시겠습니까?


답변:


3684

사용하다:

window.location.href 

주석에서 언급했듯이 아래 줄은 작동하지만 Firefox에서는 버그가 있습니다.

document.URL;

DOMString 유형의 URL, readonly를 참조하십시오 .


142
Firefox 12에서는 document.URL속성이 window.location앵커 (#)로 업데이트 된 후에 업데이트 window.location.href되지 않습니다. jsfiddle.net/PxgKy 여기에서 라이브 데모를 만들었습니다 . 다른 버전의 Firefox는 테스트하지 않았습니다. document.URLChrome 20 및 IE9에서 사용하는 문제 가 없습니다 .
— Telmo Marques

88
또한 당신은 호스트와 명확한 위치를 얻을 수 있습니다 : window.location.host그리고window.location.href.toString().split(window.location.host)[1]
— 알리 youhannaei

8
그리고 무엇 document.baseURI다음에 대해. 기본적으로 URL을 얻을 수있는 3 가지 방법이 있습니다 document.baseURI, document.URL,는 location.
— Muhammad Umer

20
-1 : 프레임, 이미지 또는 양식 name="URL"이있는 경우이 속성이 document개체에 음영 처리되고 코드가 손상됩니다. 이 경우 document.URL대신 DOM 노드를 참조합니다. 에서와 같이 전역 객체의 속성을 사용하는 것이 좋습니다 window.location.href.
— Roy Tinker

13
승리를위한 "window.location.href"
— GabrielBB

663

URL 정보 액세스

JavaScript는 브라우저의 주소 표시 줄에 표시되는 현재 URL을 검색하고 변경하는 많은 방법을 제공합니다. 이러한 모든 방법은 Location객체의 속성 인 Window객체를 사용합니다. Location다음과 같이 현재 URL이 있는 새 객체를 만들 수 있습니다 .

var currentLocation = window.location;

기본 URL 구조

<protocol>//<hostname>:<port>/<pathname><search><hash>
  • protocol : 인터넷의 리소스에 액세스하는 데 사용되는 프로토콜 이름을 지정합니다. (HTTP (SSL 없음) 또는 HTTPS (SSL 있음))

  • hostname : 호스트 이름은 리소스를 소유 한 호스트를 지정합니다. 예를 들면 다음과 같습니다 www.stackoverflow.com. 서버는 호스트 이름을 사용하여 서비스를 제공합니다.

  • 포트 : 서버에 도착했을 때 인터넷 또는 기타 네트워크 메시지가 전달 될 특정 프로세스를 인식하는 데 사용되는 포트 번호입니다.

  • 경로 이름 : 경로는 웹 클라이언트가 액세스하려는 호스트 내의 특정 리소스에 대한 정보를 제공합니다. 예를 들면 다음과 같습니다 /index.html.

  • 검색 : 쿼리 문자열은 경로 구성 요소를 따르며 리소스가 검색을위한 매개 변수 또는 처리 할 데이터와 같은 특정 목적으로 활용할 수있는 정보 문자열을 제공합니다.

  • 해시 : URL의 앵커 부분에는 해시 부호 (#)가 포함됩니다.

이러한 Location객체 속성을 사용하면 이러한 모든 URL 구성 요소와 구성하거나 반환 할 수있는 대상에 액세스 할 수 있습니다.

  • href- 전체 URL
  • protocol -URL의 프로토콜
  • host -URL의 호스트 명과 포트
  • hostname -URL의 호스트 명
  • port- 서버가 URL에 사용하는 포트 번호
  • pathname -URL의 경로명
  • search -URL의 쿼리 부분
  • 해시-URL 의 앵커 부분

나는 당신이 대답을 바랍니다 ..


7
그들은의 "방법"하지 window.location만, 속성, 여기에 우리가 예를 들어 있습니다 : var stringPathName = window.location.pathname.
— 피터 크라우스

@FabioC. 로 제거 할 수 있습니다 substring. 그러나 리디렉션을 사용 document.location = "/page.html";하여 루트 페이지 로 리디렉션하려는 경우 유용 할 수 있습니다 .page.html
— FindOut_Quran

1
이것은 언급 된 질문 이상으로 대답합니다. 실제로, 나는 한 달 전쯤에 URL 문자열에서 하나 이상의 특정 부분을 가져 오는 좋은 방법을 찾았습니다 (아마도 현재 페이지 중 하나라고 생각합니다). 다른 질문이 더 있었지만 목표는 그들의 답변이이 목적만큼 유용하지 않고 간단하지는 않았다.
— Panzercrisis 2012 년

1
한 가지 빠른 제안 : 위에서 설명한 기본 URL 구조에는에 대한 자리가 search있지만 아래 설명 목록에서는이라고합니다 query. 조정이 가능하거나 추가 설명이 추가 될 수 있습니다.
— Panzercrisis 2007 년

1
'검색'이 아니라 '검색'이라고합니다.
— Apollo Data


264

현재 페이지 URL을 가져옵니다.

window.location.href

3
이 위치는 문서가 아닌 창의 위치입니다.
— Gumbo

16
그건 같은거야. 전체 현재 URL은 문서 경로 (외부 주소)를 나타냅니다.
— Zanoni 2016 년

2
document.url과 같이 표준화되어 있습니까? (나는 w3c 문서와 같은 것을 의미한다)
— chendral

document스펙에 의해 정의 된 문서 트리의 루트입니다. window일반적으로 동일하지만 이상한 상황에 있지 않을 수 있습니다.
— broinjc

57

순수 JavaScript를 사용하면 현재 페이지 의 전체 URL 을 쉽게 얻을 수 있습니다. 예를 들어이 페이지에서이 코드를 사용해보십시오.

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

이 window.location.href속성은 현재 페이지의 URL을 반환합니다.

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>

이것들을 언급하는 것도 나쁘지 않습니다.

  • 상대 경로가 필요한 경우 간단히 window.location.pathname;

  • 호스트 이름을 얻으려면 window.location.hostname;

  • 프로토콜을 별도로 가져와야 할 경우 window.location.protocol

    • 또한 페이지에 hash태그 가 있으면 다음 과 같이 얻을 수 있습니다 window.location.hash..

따라서 window.location.href한 번에 모든 것을 처리합니다 ... 기본적으로 :

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

또한 사용하여 window윈도우 범위 내에서 이미 경우 필요하지 않습니다 ...

따라서이 경우 다음을 사용할 수 있습니다.

location.protocol

location.hostname

location.pathname

location.hash

location.href

JavaScript로 현재 URL을 가져옵니다


window.location.protocol + '//'+ window.location.hostname + window.location.pathname + window.location.hash === window.location.href; 항상 사실은 아닙니다! window.location.pathname에 GET 매개 변수가 없습니다.
— AssassiN

40

경로를 얻으려면 다음을 사용할 수 있습니다.

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


35

개발자 도구를 열고 콘솔에 다음을 입력 하고 Enter를 누르 십시오 .

window.location

예 : 아래는 현재 페이지의 결과 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

여기서 필요한 것을 잡아라. :)


29

사용하십시오 : window.location.href.

위에서 언급했듯이 document.URL 업데이트 할 때 업데이트 하지 않습니다window.location . MDN을 참조하십시오 .


21
  • window.location.href완전한 URL을 얻는 데 사용하십시오 .
  • window.location.pathname호스트를 떠나는 URL을 얻는 데 사용 합니다.

4
window.location.pathname은 질의와 해시 조각을 포함하지 않습니다
— OMGPOP


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

위의 코드는 또한 누군가를 도울 수 있습니다


2
.toLowerCase ()를 실제로 변경하는 URL에 적용했습니다. 일부 서버는 대소 문자를 구분합니다 (리눅스 등)
— AnthonyVO

window.href를 자세하게 사용해야합니다. 이 코드는이 === 창이있는 컨텍스트에서만 작동하지만, 누군가이 솔루션을 붙여 넣은 경우에는 항상 그렇지 않을 수 있습니다.
— deadboy

대소 문자를 구분하는 "일부"서버는 아닙니다. 가장 많은 서버입니다. 따라서 AnthonyVO에 동의합니다. URL의 대소 문자를 변경하는 것은 매우 나쁜 생각입니다.
— mivk

URL을 손상시키지 않도록 URL을 LoLoCase () 할 수 없습니다 !!! url http://www.server.com/path/to/Script.php?option=A1B2C3인 경우 파일 시스템이 대소 문자를 구분하면 (Linux / Unix) Script.php와 script.php는 동일하지 않습니다. 대소 문자를 구분하지 않더라도 (Windows, 일부 Mac Os) , 또는 ?option=A1B2C3동일하지 않습니다 . 서버 만 대소 문자를 구분하지 않습니다. www.server.com 또는 www.SeRvEr.cOm은 동일합니다. ?option=a1b2c3?Option=A1B2C3
— FrancescoMM

8

빠른 참조를위한 결과 추가

window.location;

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

문서 위치

  Location {href: "/programming/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

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

location.hostname

"stackoverflow.com"

7

쿼리 문자열이 포함 된 완전한 URL :

document.location.toString().toLowerCase();

호스트 URL의 경우 :

window.location

11
.toLowerCase ()를 실제로 변경하는 URL에 적용했습니다. 일부 서버는 대소 문자를 구분합니다 (리눅스 등)
— AnthonyVO

말했듯이 URL을 손상시키지 않는 URL을 toLowerCase () 할 수 없습니다 !!! url이 server.com/path/to/Script.php?option=A1B2C3 인 경우 파일 시스템이 대소 문자를 구분하는 경우 (Linux / Unix) 필요하지 않습니다. Script.php 및 script.php는 동일합니다. 대소 문자를 구분하지 않더라도 (Windows, 일부 Mac Os)? option = A1B2C3은? option = a1b2c3 또는? Option = A1B2C3과 동일하지 않습니다. 서버 만 대소 문자를 구분하지 않습니다. www.server.com 또는 www.SeRvEr.cOm은 동일합니다.
— FrancescoMM

이것을 지적 해 주신 AnthonyVO에게 감사드립니다. 완전한 URL을 얻기 위해 document.location.toString () 만 사용할 수 있습니다. toLowerCase ()는 스크립트에서 indexOf와 비교하는 것이 었습니다.
— Syed Nasir Abbas

4

jstl에서는을 사용하여 현재 URL 경로에 액세스 할 수 있습니다 pageContext.request.contextPath. Ajax 호출을 수행하려면 다음 URL을 사용하십시오.

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

예 : 페이지의 http://stackoverflow.com/posts/36577223경우을 제공 http://stackoverflow.com/controller/path합니다.


4

현재 위치 객체를 얻는 방법은 window.location입니다.

이것을 document.location현재 URL 만 문자열로 반환 한와 비교하십시오 . 아마도 혼란을 피하기 위해 document.location로 대체되었습니다 document.URL.

그리고 모든 최신 브라우저는로 매핑 document.location됩니다 window.location.

실제로는 브라우저 간 안전을 위해을 (를) window.location대신 사용해야합니다 document.location.



3

Nikhil Agrawal의 대답은 훌륭합니다. 콘솔에서 다른 구성 요소가 실제로 작동하는 것을 볼 수있는 작은 예제를 여기에 추가하면됩니다.

여기에 이미지 설명을 입력하십시오

경로 또는 쿼리 매개 변수가없는 기본 URL (예 : 개발 / 스테이징 서버와 프로덕션 서버 모두에서 작동하기 위해 AJAX 요청을 수행하는 경우)을 원할 경우 window.location.origin프로토콜과 옵션 포트 (장고 개발)를 유지하는 것이 가장 좋습니다. 호스트 이름 등을 사용하면 비표준 포트가 손상됩니다.)


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

0

현재 페이지의 전체 링크를 통해 location.href 현재 컨트롤러의 링크를 얻으려면 다음을 사용하십시오.

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


0

ID 가있는 특정 링크를 참조하는 경우이 코드가 도움이 될 수 있습니다.

$(".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+"");
        }
    });
});

여기서 ajax를 사용하여 ID를 제출하고 window.location.replace 사용하여 페이지를 리디렉션합니다 . id=""명시된대로 속성 을 추가하십시오 .



-2

먼저 페이지가 완전히로드되었는지 확인

browser,window.location.toString();

window.location.href

그런 다음 URL, URL 변수를 가져 와서 콘솔에서 인쇄하는 함수를 호출하십시오.

$(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 );
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.