Действительно ли они оба должны сослаться на тот же объект?
Согласно W3C, они одинаковы. На самом деле, для кроссбраузерной безопасности вы должны использовать window.location
, а не document.location
.
window.location более надежно согласован из двух, учитывая старые браузеры.
document.location === window.location
возвращает true
также
document.location.constructor === window. location.constructor
is true
Примечание. Только что протестировано в Firefox 3.6, Opera 10 и IE6
Да, они такие же. Это одна из многих исторических причуд JS API браузера. Попробуйте выполнить:
window.location === document.location
Канонический способ получить объект текущего местоположения - window.location
(см. эту страницу MSDN от 1996 г. и проект W3C от 2006 г. ).
Сравните это с document.location
, который изначально возвращал только текущий URL-адрес в виде строки (см. эту страницу в MSDN ). Вероятно, чтобы избежать путаницы, document.location
был заменен на document.URL
(см. здесь, в MSDN ), который также является частью DOM Level 1 .
Насколько мне известно, все современные браузеры отображают document.location
в window.location
, но я по-прежнему предпочитаю window.location
как то, что я Я использовал с тех пор, как написал свой первый DHTML.