Programing

JavaScript에서 window.location과 document.location의 차이점은 무엇입니까?

crosscheck 2020. 10. 13. 07:26
반응형

JavaScript에서 window.location과 document.location의 차이점은 무엇입니까?


둘 다 동일한 객체를 참조해야합니까?


W3C에 따르면 동일합니다. 실제로, 크로스 브라우저 안전을 위해, 당신은 사용해야 window.location보다는 document.location.

참조 : http://www.w3.org/TR/html/browsers.html#dom-location


현재 위치 개체를 가져 오는 표준 방법 window.location다음같습니다 ( 1996 년 MSDN 페이지2006 년 W3C 초안 참조 ).

document.location원래 현재 URL을 문자열로만 반환 한과 비교하십시오 ( MSDN의이 페이지 참조 ). 아마도 혼동을 피하기 위해 DOM Level 1의 일부인 ( MSDN에서 여기 참조) document.location로 대체되었습니다 .document.URL

지금까지 내가 아는 한, 모든 최신 브라우저는지도 document.locationwindow.location,하지만, 난 여전히 선호 window.location그게 내가 처음 DHTML을 쓴 이후로 사용한 적이 무엇으로.


window.location 은 모든 호환 브라우저에서 읽기 / 쓰기입니다.

document.location 은 Internet Explorer (적어도)에서는 읽기 전용이지만 Gecko 기반 브라우저 (Firefox, SeaMonkey)에서는 읽기 / 쓰기가 가능합니다.


document.location원래는 읽기 전용 속성 이었지만 Gecko 브라우저 에서도 할당 할 수 있습니다. 브라우저 간 안전을 위해 window.location대신 사용하십시오.

더 읽어보기 :

document.location

window.location


흥미롭게도 'location'이라는 이름의 프레임, 이미지 또는 양식이있는 경우 'document.location'은 각각 Location 개체 대신 프레임 창, 이미지 또는 양식에 대한 참조를 제공합니다. 이는 document.forms, document.images 및 window.frames 컬렉션 이름 조회가 window.location에 대한 매핑보다 우선 순위를 갖기 때문입니다.

<img name='location' src='location.png'>

if (document.location.tagName == 'IMG') alert('Hello!')

내가 아는 한, 둘 다 동일합니다. 크로스 브라우저 안전을 위해 당신이 사용할 수있는 window.location것보다 document.location.

모든 최신 브라우저는지도 document.locationwindow.location,하지만, 난 여전히 선호 window.location그것이 내가 처음으로 웹 페이지를 쓴 이후로 사용한 적이 무엇으로. 더 일관 적입니다.

둘 다 동일하다는 것을 명확히하는 document.location === window.locationreturns 도 볼 수 있습니다 true.


document.location === window.location 보고 true

또한

document.location.constructor === window.location.constructor 이다 true

참고 :, Firefox 3.6, Opera 10 및 IE6에서 방금 테스트했습니다.


예, 동일합니다. 브라우저 JS API의 많은 역사적 특징 중 하나입니다. 시도해보십시오.

window.location === document.location

window.location은 이전 브라우저를 고려할 때 둘 중 더 안정적으로 일관됩니다.


html 5는 더 이상 프레임 셋을 지원하지 않기 때문에 오늘날 그 차이를보기는 어렵습니다. 그러나 프레임 셋이있는 당시에는 document.location은 코드가 실행되는 프레임 만 리디렉션하고 window.location은 전체 페이지를 리디렉션합니다.


window.location현재 URL 을 얻는 더 안정적인 방법 이라고 말하고 싶습니다 . 다음은 URL에 해시 매개 변수를 추가하고 나중에 읽는 시나리오 중 하나에서 앞에 나온 window.location의 차이점 document.url입니다.

URL에 해시 매개 변수를 추가 한 후.

이전 브라우저에서는을 사용하여 URL에서 해시 매개 변수를 가져올 수 document.url없었지만 사용했을 때 window.locationURL에서 해시 매개 변수를 가져올 수있었습니다.

따라서 항상 사용하는 것이 좋습니다 window.location.


document.location.constructor === window.location.constructor입니다 true.

에서 볼 수있는 것과 똑같은 객체이기 때문입니다 document.location===window.location.

따라서 생성 자나 다른 속성을 비교할 필요가 없습니다.


적어도 IE에서는 로컬 파일에 약간의 차이가 있습니다.

document.URL은 "file : // C : \ projects \ abc \ a.html"을 반환합니다.

그러나 window.location.href는 "file : /// C : /projects/abc/a.html"을 반환합니다.

하나는 백 슬래시이고 하나는 슬래시입니다.


네, 똑같지 만 ....!

window.location 일부 Internet Explorer 브라우저에서 작동하지 않습니다.


실제로 두 가지 사이의 크롬 차이를 발견했습니다. 예를 들어 자식 프레임에서 샌드 박스 프레임으로 탐색을 수행하려는 경우 window.location이 아닌 document.location으로 만이 작업을 수행 할 수 있습니다.


대부분의 사람들이 여기에서 추천하고 있지만, Google Analytics 의 동적 프로토콜이 오랜 세월 동안 (최근 ga.js에서 analytics.js로 이동하기 전) 이렇게 생겼습니다.

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

추가 정보 : https://developers.google.com/analytics/devguides/collection/gajs/

새 버전에서는 브라우저가 자동으로 프로토콜을 추가 할 수 있도록 '//'를 사용했습니다.

'//www.google-analytics.com/analytics.js'

따라서 Google 이 JS에서 프로토콜이 필요할 때보 다 document.location선호 한다면 window.location몇 가지 이유가 있다고 생각합니다.

전반적인 : 나는 개인적으로 그렇게 생각 document.location하고 window.location있는 동일하지만, 같은 브라우저의 사용에 대한 가장 큰 통계와 거대한 경우 구글이 사용 document.location에를 , 나는 그들을 따라하는 것이 좋습니다.

참고 URL : https://stackoverflow.com/questions/7857878/window-location-vs-document-location

반응형