JavaScript에서 window.navigate 또는 document.location을 사용해야합니까?


177

JavaScript를 사용하여 현재 웹 페이지의 위치를 ​​변경하는 데 선호되는 방법은 무엇입니까? window.navigate와 document.location이 모두 사용되는 것을 보았습니다. 행동에 차이가 있습니까? 브라우저 구현에 차이가 있습니까?

답변:


220
window.location.href = 'URL';

현재 창의 위치를 ​​변경하기위한 표준 구현입니다.


22
window.location.href가 표준 구현임을 나타내는 참조가 있습니까? 그리고 그 표준이 모든 브라우저에 동일하게 적용됩니까? 당신은 확실히 지식이 있고 15+ 이상의 투표 (및 허용 된 답변)가보다 권위있는 의견을 제시하는 데 도움을 주지만, 브라우저 개발 팀의 문서를보고 주장을 뒷받침하는 것이 더 낫다고 생각합니다.
Goyuix

6
@ Goyuix, 이것이 window.location.href완전한 구현 이라고 말하는 것이 더 정확 하지만 window.location동일한 것을 달성합니다. 참조 docs.sun.com/source/816-6408-10/location.htm : "당신이 문자열을 지정하면 location개체의 특성, 자바 스크립트는 생성 location객체 및 양수인의에 문자열 것으로 href속성을."
James Skidmore

3
:이 사람들처럼 보인다는 개인의 선호도 결정 developer.mozilla.org/Talk:en/DOM/window.location을 . 또는 아래쪽 근처의 예를 참조하십시오. 단지 사용 window.location하지만 developer.mozilla.org/en/window.location 중 하나만 나타내는 것은 아닙니다 .
James Skidmore 18

1
나는 현재 안드로이드 개발을 위해 이것을 사용하고 있습니다. Android 기본 브라우저의 JS에서 페이지를 리디렉션하는 데 문제가 있습니다. 나는 window.location.href = 'URL';또한 window.location.assign('URL');새로운 페이지를 다시로드하도록 설계된 방법을 시도했다 . 자세한 정보는 w3schools.com/jsref/obj_location.asp
philipp

3
window.navigate는 Internet Explorer에서 사용하는 독점적 인 방법입니다 (다른 브라우저가 호환성을 위해 모방하는지, 크롬은 그렇지 않습니다). document.location또는 window.location표준 개체입니다 (다양한 HTML / HTML5 / DOM 사양 참조). 레거시 코드로 인해 document.location = someURL(또는 window.location = someURL)가 지원 될 수 있습니다. 그것을하는 올바른 방법은 document.location.href = someURL, 또는 아마도 document.location.assign(someURL).
PhistucK

11

일부 브라우저에서는 window.navigate가 지원되지 않습니다

자바 스크립트에는 리디렉션을위한 여러 가지 방법이 있습니다. 아래 코드와 설명을 참조하십시오

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.href 는 브라우저 캐시에서 페이지를로드하며 항상 서버로 요청을 보내지는 않습니다. 따라서 캐시에 사용 가능한 이전 버전의 페이지가 있으면 서버에서 새 페이지를로드하는 대신 해당 페이지로 리디렉션됩니다.

사용자가 뒤로 단추를 사용하여 원본 문서로 돌아갈 수 있도록하려면 리디렉션을위한 window.location.assign () 메서드입니다.

새 페이지로 리디렉션하고 사용자가 뒤로 버튼을 사용하여 원본 페이지로 이동하지 못하게하려면 window.location.replace () 메서드.


7

document.locatio n은 (더 이상 사용되지 않지만 여전히 존재하는) 읽기 전용 문자열 속성이며 document.url 로 대체되었습니다 .


6

window.location 프레임에도 영향을 미칩니다

내가 찾은 가장 좋은 형태는 다음과 같습니다.

parent.window.location.href

그리고 더 나쁜 것은 :

parent.document.URL 

방대한 브라우저 테스트를 수행했으며 여러 플러그인이있는 희귀 한 IE는 두 번째 양식으로 정의되지 않습니다.


이 논리에 의해 top.window.location.href가 여전히 더 나을까요?
Orwellophile 2016 년

6

window.location브라우저 대상에 영향을 미칩니다. document.location은 브라우저 및 프레임 / iframe에만 영향을줍니다.


4

window.navigate일부 브라우저에서는 지원되지 않으므로 사용하지 않아야합니다. location 속성을 사용하는 다른 방법은 가장 안정적이고 일관된 방법입니다


2

나는 함께 갈 것이다 window.location = "http://...";. 몇 년 동안 브라우저 간 JavaScript를 코딩 해 왔으며이 방법을 사용하는 데 문제가 없었습니다.

window.navigatewindow.location.href에게는 조금 이상해 보인다.


13
window.location은 작동하지만 "location"이 개체이므로 기술적으로 잘못되었습니다.
James Skidmore

16
그러나 JavaScript의 모든 것은 객체입니다 :)
cllpse

1
거의 모든 것이 JavaScript의 객체이지만 객체에 문자열을 할당해도 일반적으로 값을 속성 중 하나로 설정하지는 않지만 (window.location 또는 document.location이 href 속성을 사용함) 대신 해당 객체를 끈. 이 경우 기존 (기발한) 구현 및 레거시 (그렇지 않은 레거시) 컨텐츠와 호환되도록 브라우저 쿼크가 추가되었습니다.
PhistucK

1

실제로 차이는 없습니다. 이를 수행하는 방법에는 약 5 가지가 있습니다. 그러나, 나는 가장 자주 볼 수있는 사람은 document.location하고 window.location그들이 모든 주요 브라우저에서 지원하고 있기 때문이다. (개인적 window.navigate으로 프로덕션 코드에서 사용되는 것을 본 적이 없으므로 지원이 충분하지 않을 수 있습니다.)


모든 브라우저에서 document.location이 작동하지는 않습니다. window.location 않습니다.
Philippe Leybaert

2
Firefox는 window.navigate를 지원하지 않습니다
Andrew Harry


-5

당신은 사용하여 페이지를 이동할 수 있습니다

window.location.href =Url;

3
이것은 실제로 더 많은 정보를 추가하지 않고 수용된 대답을 곱한 것입니다.
Stuart Siegler

3
당신은 더 나아가서 당신이 대답을 간단히 표절했다고 주장 할 수도 있습니다
Liam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.