jQuery로 현재 URL을 받으시겠습니까?


1829

jQuery를 사용하고 있습니다. 현재 URL의 경로를 가져 와서 변수에 할당하려면 어떻게합니까?

URL 예 :

http://localhost/menuname.de?foo=bar&number=0

1
당신은 또한 볼 수 있습니다 tech-blog.maddyzone.com/javascript/...
Rituraj 라탄을

4
jQuery가 작업을 수행하는 데 필요한지 여부에 관계없이 대답이 있기 때문에 jQuery를 묻는 질문을 복원해야한다고 생각합니다.
goodeye


3
@ goodeye 아니오, 위치를 얻는 jQuery 방법이 없습니다. jQuery 버그 추적기 현재 :»작동했을 수도 있지만 결코 지원되거나 문서화되지 않았습니다. 더 빠르고 간단하며 이해하기 쉬운 document.location.href를 사용하기 만하면됩니다.«즉, 일부 사람들은 jQuery를 사용하여 위치를 얻었지만 기능보다는 버그에 의존했습니다. 참조 : bugs.jquery.com/ticket/7858
feeela

답변:


2519

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

var pathname = window.location.pathname; // Returns path only (/path/example.html)
var url      = window.location.href;     // Returns full URL (https://example.com/path/example.html)
var origin   = window.location.origin;   // Returns base URL (https://example.com)


100
jQuery는 Javascript를 죽이지 않고 새로운 삶을 선사했습니다. 새로운 C # / Java 프로그래머가 포인터를 이해합니까? 아니요. 그들이 필요합니까? 실제로, 새로운 추상화는 중요하지 않을만큼 강력합니다.
육체

199
"jQuery에서 XYZ를 어떻게 수행합니까?"라는 대답은 평범한 자바 스크립트라는 것이 일반적입니다. 평범한 자바 스크립트로 무언가를하는 방법을 알고있을 것입니다. 그러나 브라우저 불일치로 인해 "jQuery"방식을 선호 할 수 있습니다. 먼저 jQuery 또는 프레임 워크를 기억하여 먼저 브라우저를 확인한 다음 원하는 몇 가지 방법을 수행합니다. jQuery가 일반 js를 죽이고 있습니다. 그렇습니다. 신께 감사하지만 사용 가능하게 만들고 있습니다.
Parris

9
전체 URL에는 작동하지 않습니다. 예를 들어. " mail.google.com/mail/u/0/#mbox/13005b79fe72f448 "의 경우 / mail / u / 0
dwaynemac

12
Ummm, ... window.location.pathname은 "?"의 URL 만 가져옵니다. 질문에서 요청 한대로 쿼리 매개 변수를 얻지 못합니다.
johntrepreneur

816

순수한 jQuery 스타일에서 :

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

위치 객체에는 호스트, 해시, 프로토콜 및 경로 이름과 같은 다른 속성도 있습니다.


52
분명히 jQuery에서 $ (location) 사용은 지원되지 않으며 다음과 관련하여 권장되지 않습니다. bugs.jquery.com/ticket/7858
Peter

10
@Peter Bug가 유효하지 않습니다.
kevinji

21
@ mc10 : "유효하지 않은"부분은 $ (location) 지원 요청에 적용됩니다. 사용해서는 안됩니다.
Peter

6
이 답변은 필요하지 않으며 jquery를 사용하지 않도록 질문과 답변을 업데이트 할 수 있습니다. 여기에서 이유를 찾을 수 있습니다 bugs.jquery.com/ticket/7858#comment:4
Vishwanath

8
@HaralanDobrev : 당신은 .attr()위치에서 할 수 없어야합니다 . (1) 요소가 아니므 $(location)로 최대한 그늘이 있으며 (2) 작동하더라도 .prop()속성을 얻는 데 사용해야합니다 . .attr()HTML 속성입니다.
cHao

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

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

var x = $(location).attr('<property>');

이것은 jQuery가있는 경우에만 작동합니다. 예를 들면 다음과 같습니다.

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>
  $(location).attr('href');      // http://www.refulz.com:8082/index.php#tab2
  $(location).attr('pathname');  // index.php
</script>
</html>

13
이전의 설명과 동일하지만 객체의 모든 요소가 포함되어 있습니다. 좋은 답변입니다.
Oskar Calvo

4
경로 이름 /index.php대신 사용해야합니다 index.php.
안드레아


2
bugs.jquery.com/ticket/7858 에 따르면 이것은 우연히 만 작동합니다. 또한 attrHTML 속성을 사용하여 설정할 수있는 DOM 객체에서만 사용해야합니다.
MauganRa

69

URL에 해시 매개 변수가 필요한 경우 window.location.href더 나은 선택 일 수 있습니다.

window.location.pathname
=> /search

window.location.href 
 => www.website.com/search#race_type=1

3
누군가 해시 태그 만 필요한 경우 window.location.href를 호출 할 수 있습니다
Amit Patel

15
나는 @AmitPatel 수단 생각window.location.hash
ptim

53

JavaScript의 내장 window.location객체 를 사용하려고 합니다.


3
'?'다음에 항목을 반환하지 않습니다. 위치에.
Majid

@majidgeek은 Firefox, Chrome 및 IE에서 작동합니다. 이 침입에 대한 테스트 사례를 제공 할 수 있습니까?
바니

3
window.location.pathname?
worc

45

이 함수를 JavaScript로 추가하면 현재 경로의 절대 경로가 반환됩니다.

function getAbsolutePath() {
    var loc = window.location;
    var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
    return loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
}

나는 그것이 당신을 위해 작동하기를 바랍니다.


1
이것은 내가 하드 코딩 된 기본 URL을 가지고있는 스크립트에 큰 도움이되었습니다. 나는 루트에 후행 '/'가없고 경로에 삽입하는 것을 선호하므로 방금 두 번째 줄을 만들었습니다.var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/'));
cogdog

40

window.location은 자바 스크립트의 개체입니다. 다음 데이터를 반환합니다

window.location.host          #returns host
window.location.hostname      #returns hostname
window.location.path          #return path
window.location.href          #returns full current url
window.location.port          #returns the port
window.location.protocol      #returns the protocol

jquery에서 사용할 수 있습니다

$(location).attr('host');        #returns host
$(location).attr('hostname');    #returns hostname
$(location).attr('path');        #returns path
$(location).attr('href');        #returns href
$(location).attr('port');        #returns port
$(location).attr('protocol');    #returns protocol

1
무엇에 대해 windo.location.origin?
Ali Sheikhpour

30

이것은 많은 사람들이 생각하는 것보다 더 복잡한 문제입니다. 여러 브라우저는 자바 스크립트 위치 객체 내장 및 매개 변수 / 방법 접근을 통해 관련 지원 window.location또는 document.location. 그러나 Internet Explorer (6,7)의 다른 버전은 이러한 방법을 동일한 방식으로 지원하지 않으므로 ( window.location.href? window.location.replace()지원되지 않음) Internet Explorer를 손에 쥐기 위해 항상 조건부 코드를 작성하여 다르게 액세스해야합니다.

따라서 jQuery를 사용할 수 있고로드 한 경우 이러한 문제를 해결하기 때문에 다른 언급 한 것처럼 jQuery (위치)를 사용할 수도 있습니다. 그러나 JavaScript를 통해 (즉, Google Maps API 및 위치 객체 메소드를 사용하여) 일부 클라이언트 측 지리적 위치 재 지정을 수행하려는 경우 전체 jQuery 라이브러리를로드하고 다음과 같은 조건부 코드를 작성하지 않을 수 있습니다. Internet Explorer / Firefox 등의 모든 버전을 확인합니다.

Internet Explorer는 프론트 엔드 코딩 고양이를 불행하게 만들지 만 jQuery는 우유 한 접시입니다.


추가 사항 : bugs.jquery.com/ticket/8138 . jQuery 1.8.0 소스에는 다음과 같은 주석이 있습니다. // # 8138, document.domain이 설정된 경우 window.location에서 // 필드에 액세스 할 때 IE에서 예외가 발생할 수 있습니다.
Jan Święcki


24

java-script는 브라우저의 주소 표시 줄에 표시되는 현재 URL을 검색하는 많은 방법을 제공합니다.

테스트 URL :

http://
stackoverflow.com/questions/5515310/get-current-url-with-jquery/32942762
?
rq=1&page=2&tab=active&answertab=votes
#
32942762
resourceAddress.hash();
console.log('URL Object ', webAddress);
console.log('Parameters ', param_values);

함수:

var webAddress = {};
var param_values = {};
var protocol = '';
var resourceAddress = {

    fullAddress : function () {
        var addressBar = window.location.href;
        if ( addressBar != '' && addressBar != 'undefined') {
            webAddress[ 'href' ] = addressBar;
        }
    },
    protocol_identifier : function () { resourceAddress.fullAddress();

        protocol = window.location.protocol.replace(':', '');
        if ( protocol != '' && protocol != 'undefined') {
            webAddress[ 'protocol' ] = protocol;
        }
    },
    domain : function () {      resourceAddress.protocol_identifier();

        var domain = window.location.hostname;
        if ( domain != '' && domain != 'undefined' && typeOfVar(domain) === 'string') {
            webAddress[ 'domain' ] = domain;
            var port = window.location.port;
            if ( (port == '' || port == 'undefined') && typeOfVar(port) === 'string') {
                if(protocol == 'http') port = '80';
                if(protocol == 'https') port = '443';           
            }
            webAddress[ 'port' ] = port;
        }
    },
    pathname : function () {        resourceAddress.domain();

        var resourcePath = window.location.pathname;
        if ( resourcePath != '' && resourcePath != 'undefined') {
            webAddress[ 'resourcePath' ] = resourcePath;
        }
    },
    params : function () {      resourceAddress.pathname();

        var v_args = location.search.substring(1).split("&");

        if ( v_args != '' && v_args != 'undefined')
        for (var i = 0; i < v_args.length; i++) {
            var pair = v_args[i].split("=");

            if ( typeOfVar( pair ) === 'array' ) {
                param_values[ decodeURIComponent( pair[0] ) ] = decodeURIComponent( pair[1] );
            }
        }
        webAddress[ 'params' ] = param_values;
    },
    hash : function () {        resourceAddress.params();

        var fragment = window.location.hash.substring(1);
        if ( fragment != '' && fragment != 'undefined')
            webAddress[ 'hash' ] = fragment;        
    }
};
function typeOfVar (obj) {
      return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}
  • 프로토콜« 웹 브라우저 는 WebHosted Applications와 Web Client (Browser) 간의 통신 규칙에 따라 인터넷 프로토콜을 사용합니다. (http = 80 , https (SSL) = 443 , ftp = 21 등)

EX : 기본 포트 번호

<protocol>//<hostname>:<port>/<pathname><search><hash>
https://en.wikipedia.org:443/wiki/Pretty_Good_Privacy
http://stackoverflow.com:80/
  • (//)«호스트는 인터넷에서 엔드 포인트 (자원이 상주하는 머신)에 지정된 이름입니다. www.stackoverflow.com- 응용 프로그램 (또는)의 DNS IP 주소 localhost : 8080-localhost

도메인 이름은 DNS (Domain Name System) 트리의 규칙과 절차에 따라 등록합니다. 주소 지정을 위해 IP 주소로 도메인을 관리하는 사람의 DNS 서버. DNS 서버 계층에서 stackoverlfow.com의 루트 이름은 com입니다.

gTLDs      - com « stackoverflow (OR) in « co « google

로컬 시스템 호스트 파일에서 PUBLIC이 아닌 도메인을 유지해야합니다. localhost.yash.com « localhsot - subdomain(web-server), yash.com - maindomain(Proxy-Server). myLocalApplication.com 172.89.23.777

  • (/)«경로는 웹 클라이언트가 액세스하려는 호스트 내의 특정 리소스에 대한 정보를 제공합니다.
  • (?)«선택적 쿼리는 구분 기호 (&)로 구분 된 일련의 속성-값 쌍을 전달하는 것입니다.
  • «선택적 단편은 종종 특정 요소의 id 속성이며 웹 브라우저는이 요소를보기로 스크롤합니다.

매개 변수에 Epoch 가 있으면 ?date=1467708674사용하십시오.

var epochDate = 1467708674; var date = new Date( epochDate );

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


usernaem / password에
다음과 같은 @ 기호가 포함 된 경우 username : password를 사용하는 인증 URL :

Username = `my_email@gmail`
Password = `Yash@777`

다음 당신은 URL이 인코딩 필요 @%40. 보내다...

http://my_email%40gmail.com:Yash%40777@www.my_site.com

encodeURI()(vs) encodeURIComponent()

var testURL = "http:my_email@gmail:Yash777@//stackoverflow.com?tab=active&page=1#32942762";

var Uri = "/:@?&=,#", UriComponent = "$;+", Unescaped = "(-_.!~*')"; // Fixed
var encodeURI_Str = encodeURI(Uri) +' '+ encodeURI( UriComponent ) +' '+ encodeURI(Unescaped);
var encodeURIComponent_Str =  encodeURIComponent( Uri ) +' '+ encodeURIComponent( UriComponent ) +' '+ encodeURIComponent( Unescaped );
console.log(encodeURI_Str, '\n', encodeURIComponent_Str);
/*
 /:@?&=,# +$; (-_.!~*') 
 %2F%3A%40%3F%26%3D%2C%23 %2B%24%3B (-_.!~*')
*/

23

이것은 또한 작동합니다 :

var currentURL = window.location.href;

이것은 대부분의 사람들이 찾는 전체 URL을 제공합니다.
Kemal

19

URL 사용을 위해 window.location을 기록하고 모든 옵션을 볼 수 있습니다.

window.location.origin

전체 경로 사용을 위해 :

window.location.href

위치도 있습니다. _ _

.host
.hostname
.protocol
.pathname

Internet Explorer에서 location.origin이 작동하지 않으므로 사용하지 않아야합니다.
Jacek Kolasa 2016 년


13

URL 과 해시 태그 를 연결하려는 사람이있는 경우 다음 두 기능을 결합하십시오.

var pathname = window.location.pathname + document.location.hash;

명확히하기 위해 : jQuery를 전혀 사용할 필요가 없습니다. 위의 자바 스크립트 함수는 OP가 요구 한 것을 반환합니까?
GHC

12

나는 GET 변수를 제거하기 위해 이것을 가지고있다.

var loc = window.location;
var currentURL = loc.protocol + '//' + loc.host + loc.pathname;

12

js 자체를 사용하여 경로를 얻 window.location거나 location현재 URL의 객체를 제공 할 수 있습니다

console.log("Origin - ",location.origin);
console.log("Entire URL - ",location.href);
console.log("Path Beyond URL - ",location.pathname);



11

iframe 내에서 부모 창의 URL을 가져 오려면 :

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

NB : 동일한 도메인에서만 작동


11

다음은 jQuery와 JavaScript를 사용하여 현재 URL을 가져 오는 예입니다.

$(document).ready(function() {

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

    //Pure JavaScript
    var pathname = window.location.pathname;

    // To show it in an alert window
    alert(window.location);
});


$.getJSON("idcheck.php?callback=?", { url:$(location).attr('href')}, function(json){
    //alert(json.message);
});



9

window.location 은 현재 URL 을 제공하며 원하는 URL 을 추출 할 수 있습니다 ...


9

purl.js를 참조하십시오 . 이것은 jQuery에 따라 실제로 도움이되며 사용할 수도 있습니다. 다음과 같이 사용하십시오.

$.url().param("yourparam");

8

루트 사이트의 경로를 얻으려면 다음을 사용하십시오.

$(location).attr('href').replace($(location).attr('pathname'),'');

1
그렇지 .replace('#.*', '')않습니까? 해시 마크뿐만 아니라 그 이후의 모든 것을 제거합니까?
Jonas Kölker

8

매우 일반적으로 사용되는 상위 3 가지

1. window.location.hostname 
2. window.location.href
3. window.location.pathname

8

var path = location.pathname현재 URL의 경로를 반환합니다 (jQuery는 필요하지 않습니다). 사용 window.location은 선택 사항입니다.


8

모든 브라우저는 자바 스크립트 창 객체를 지원합니다. 브라우저의 창을 정의합니다.

전역 객체와 함수는 자동으로 윈도우 객체의 일부가됩니다.

모든 전역 변수는 창 개체 속성이고 모든 전역 함수는 그 방법입니다.

HTML 문서 전체도 창 속성입니다.

따라서 window.location 객체를 사용하여 모든 URL 관련 속성을 가져올 수 있습니다.

자바 스크립트

console.log(window.location.host);     //returns host
console.log(window.location.hostname);    //returns hostname
console.log(window.location.pathname);         //return path
console.log(window.location.href);       //returns full current url
console.log(window.location.port);         //returns the port
console.log(window.location.protocol)     //returns the protocol

JQuery

console.log("host = "+$(location).attr('host'));
console.log("hostname = "+$(location).attr('hostname'));
console.log("pathname = "+$(location).attr('pathname')); 
console.log("href = "+$(location).attr('href'));   
console.log("port = "+$(location).attr('port'));   
console.log("protocol = "+$(location).attr('protocol'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


1
location.pathname사용중인 곳을 보고 있습니다 . location.path이 답변을 업데이트해야합니까?
Edward

@Edward 업데이트
Sumesh TG

7
var newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;

2
답에 대한 설명을 추가해야합니다.
랩터

5
// get current URL

$(location).attr('href');
var pathname = window.location.pathname;
alert(window.location);

4

jstl에서는을 사용하여 현재 URL 경로에 액세스 할 수 있습니다 pageContext.request.contextPath. 아약스 호출을 수행하려는 경우,

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

예 : 페이지 http://stackoverflow.com/questions/406192에서이 줄 것이다http://stackoverflow.com/controller/path

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.