16 ответов:
согласно W3C, они одинаковы. На самом деле, для кроссбраузерной безопасности, вы должны использовать
window.location, а неdocument.location.
канонический способ получить объект текущего местоположения -
window.location(см. эта страница MSDN с 1996 года и проект W3C от 2006 года).сравните это с
document.location, который первоначально возвращал только текущий URL-адрес в виде строки (см. эта страница на MSDN). Вероятно, чтобы избежать путаницы,document.locationбыл замененdocument.URL(см. здесь на MSDN), которая также является частью DOM Level 1.насколько я знаете, все современные браузеры map
document.locationtowindow.location, но я все равно предпочитаюwindow.locationКак это то, что я использовал, так как я написал свой первый DHTML.
document.locationизначально было свойством только для чтения, хотя Gecko браузеры позволяют назначить его, а также. Для кроссбраузерной безопасности используйтеwindow.locationвместо.подробнее:
интересно, что если у вас есть рамка, изображение или форма с именем "местоположение", то " документ.location ' предоставляет ссылку на фреймовое окно, изображение или форму, соответственно, вместо объекта Location. Видимо, это из-за документа.формы, документы.изображения, и окно.поиск имени коллекции фреймов получает приоритет над отображением в окно.местоположение.
<img name='location' src='location.png'> if (document.location.tagName == 'IMG') alert('Hello!')
насколько я знаю, оба одинаковы. Для кроссбраузерной безопасности вы можете использовать
window.location, а неdocument.location.все современные браузеры map
document.locationtowindow.location, но я все равно предпочитаюwindow.locationКак это то, что я использовал, так как я написал свою первую веб-страницу. это более последовательно.вы можете ознакомиться
document.location === window.locationвозвращает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Это более надежный способ получения тока URL. Ниже приводится разница междуwindow.locationиdocument.urlэто произошло в одном из сценариев, где я добавлял параметры хэша в URL-адрес и читал его позже.после добавления параметров хэша в URL.
в старом браузере я не смог получить параметры хэша из URL с помощью
document.url, но когда я использовалwindow.locationтогда я смог получить параметры хэша из URL-адреса.так что всегда лучше использовать
window.location.
document.location.constructor === window.location.constructorиtrue.потому что это точно такой же объект, как вы можете видеть из
document.location===window.location.поэтому нет необходимости сравнивать конструктор или любое другое свойство.
по крайней мере, в IE, это имеет небольшое отличие от локального файла:
документ.URL-адрес будет возвращать "file://C:\projects\abc\a.html"
но окне.местоположение.Солар, может вернется "file:///C:/projects/abc/a.html"
один назад Слэш, один вперед Слэш.
в настоящее время редко можно увидеть разницу, потому что html 5 больше не поддерживает наборы фреймов. Но в то время у нас был набор фреймов, документ.расположение будет перенаправлять только кадр, в котором выполняется код, и окно.расположение перенаправит всю страницу.
на самом деле я замечаю разницу в chrome между обоими , например, если вы хотите сделать навигацию к изолированному кадру из дочернего кадра, то вы можете сделать это только с документом.расположение, но не с окном.расположение
несмотря на то, что большинство людей рекомендуют здесь, вот как Google Analyticsдинамический протокол snipped выглядел так долго (до того, как они переехали из ga.js для аналитики.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 предпочитает документ.расположение до
window.locationкогда им нужен протокол в JS, я думаю, у них есть некоторые причины для этого.в целом: Я лично в это верю
document.locationиwindow.locationто же самое, но если гигант с самой большой статистикой об использовании браузеров, таких как Google используя документ.расположение, Я рекомендую следовать им.
Comments