답변:
W3C에 따르면 동일합니다. 실제로는 브라우저 간 안전을 위해을 (를) window.location
대신 사용해야합니다 document.location
.
window.location
정당성을 제공하지 않고 모범 사례를 추천 (항상 사용 )하는 경우 -1 정당성을 제공하지 않으면 왜 조언을 받아야합니까? Christoph의 답변은 이와 관련하여 훨씬 더 유용합니다.
현재 위치 객체를 얻는 정식 방법 은 1996 년의이 MSDN 페이지 와 2006 년의 W3C 초안을window.location
참조하십시오 .
이것을 document.location
현재 URL 만 문자열로 반환 한와 비교하십시오 ( MSDN의이 페이지 참조 ). 혼동을 피하기 위해 아마도 DOM Level 1의 일부인 ( MSDN 참조) document.location
로 대체되었습니다 .document.URL
지금까지 내가 아는 한, 모든 최신 브라우저는지도 document.location
에 window.location
,하지만, 난 여전히 선호 window.location
그게 내가 처음 DHTML을 쓴 이후로 사용한 적이 무엇으로.
window.location
, 그냥 사용하는 것이 동일하게 유효하지 location
않습니까?
window
객체이다. 따라서 스크립트의 최상위 수준에서 정의한 모든 변수 또는 함수는로 참조되는 객체의 속성이며 window
이는 전역 객체입니다. 때와 같은 결석 글로벌 객체는 암시 window.
하여 - location
으로 해석됩니다 window.location
. 주의 사항- if(an_undefined_variable)
변수가 정의되지 않은 경우 fe 에서 오류가 발생합니다 if(window.an_undefined_variable)
.
window.location 은 모든 호환 브라우저에서 읽기 / 쓰기입니다.
document.location 은 Internet Explorer에서 최소한 읽기 전용이지만 Gecko 기반 브라우저 (Firefox, SeaMonkey)에서는 읽기 / 쓰기가 가능합니다.
document.location
IE에서 읽기 전용 인 클레임을 재현 할 수 없습니다 . IE 10, 9, 8 및 6에서 modern.ie의 VM을 사용하여 성공적으로 할당 할 수 있습니다 .
console.log(location);
? !!
document.location
Gecko 브라우저를 사용하여 할당 할 수도 있지만 원래는 읽기 전용 속성이었습니다 . 브라우저 간 안전을 위해 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
크롬이나 파이어 폭스에 그림자 수 없습니다.
내가 아는 한, 둘 다 동일합니다. 크로스 브라우저 안전을 위해 window.location
대신 사용할 수 있습니다 document.location
.
모든 최신 브라우저는지도 document.location
에 window.location
,하지만, 난 여전히 선호 window.location
그것이 내가 처음으로 웹 페이지를 쓴 이후로 사용한 적이 무엇으로. 더 일관성이 있습니다.
또한 document.location === window.location
returns 를 볼 수 있으며 true
, 이는 둘 다 동일하다는 것을 명확하게합니다.
document.location === window.location
보고 true
또한
document.location.constructor === window.location.constructor
이다 true
참고 : Firefox 3.6, Opera 10 및 IE6에서 방금 테스트했습니다.
===
와 ==
동일합니다.
"abc" == new String("abc")
returns true
while "abc" === new String("abc")
returns false
.
==
그리고 ===
동일합니다. 사양 섹션 11.9.3 및 11.9.6을 참조하십시오 . 비 - 널 들어 비 정의되지 않은 수의 비 BOOL는 동일한 유형의 문자열이 아닌 값은, ==
문제가 11.9.3 파트 1 층에 의해 지배된다 ===
동일 판독 11.9.6 부 (7)에 의해 동작이 돌아 true
한다면 x와 y는 같은 객체를 나타냅니다. 그렇지 않으면를 반환하십시오 false
.
document.location
및 window.location
객체를 가리키는. 트리플 이퀄라이제이션의 요점이 빠졌습니다. 2 equals를 사용 한다고해서 동일한 obj 임을 증명할 수 는 없습니다 . 2가 같으면 거짓 긍정을주기 때문에 3은 같고 2는 같지 않아야합니다. document.location에이 URL 문자열입니다함으로써 브라우저에서 동일 window.location.toString()
, 그리고 document.location==window.location
진정한 동안을 반환 document.location===window.location
false를 돌려줍니다.
document.location === window.location
비교가 되는 한 당신은 꽤 정확합니다 . 사실 .constructor
비교가 너무 수단에서 발생되고,이 대답은 여전히 소리라고 생각하지만, 사용하는 ===
추론을 단순화한다.
나는 window.location
현재 URL 을 얻는 더 안정적인 방법 이라고 말할 것이다 . 다음은 URL에 해시 매개 변수를 추가하고 나중에 읽는 시나리오 중 하나에서 window.location
와 의 차이점 document.url
입니다.
URL에 해시 매개 변수를 추가 한 후
이전 브라우저에서는을 사용하여 URL에서 해시 매개 변수를 얻을 수 document.url
없었지만 사용 window.location
하면 URL에서 해시 매개 변수를 얻을 수있었습니다.
따라서 항상 사용하는 것이 좋습니다 window.location
.
document.URL
- window.location
그리고 에 관한 것 document.location
입니다. 또한 document.url
존재하지 않습니다 = 대문자 여야합니다.
그래, 그들은 동일하지만 ....!
window.location
일부 Internet Explorer 브라우저에서 작동하지 않습니다.
여기에서 권장하는 대부분의 사람들이 있음에도 불구하고 Google 애널리틱스 의 동적 프로토콜이 최근에 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에를 , 나는 그들을 따라하는 것이 좋습니다.
실제로 둘 사이의 크롬 차이가 있음을 알 수 있습니다. 예를 들어 자식 프레임에서 샌드 박스 프레임으로 탐색하려면 window.location이 아닌 document.location 으로이 작업을 수행 할 수 있습니다.