В чем разница между window.location и document.location в JavaScript? - PullRequest
224 голосов
/ 12 марта 2010

Должны ли они оба ссылаться на один и тот же объект?

Ответы [ 16 ]

2 голосов
/ 04 августа 2016

Ну да, они одинаковые, но ....!

window.location не работает в некоторых браузерах Internet Explorer.

2 голосов
/ 16 июня 2015

По крайней мере, в IE, он немного отличается от локального файла:

document.URL вернется "Файл: // C: \ Проекты \ а \ a.html"

но window.location.href вернется "Файл: /// C: /projects/abc/a.html"

Один слеш, один слеш.

2 голосов
/ 30 августа 2012

Я бы сказал, window.location - более надежный способ получения текущего URL . Ниже приведена разница между window.location и document.url, появившимися в одном из сценариев, когда я добавлял параметры хеша в URL и читал его позже.

После добавления хеш-параметров в URL.

В более старом браузере я не смог получить параметры хеш-функции из URL-адреса с помощью document.url, но когда я использовал window.location, я смог получить параметры хеш-функции из URL-адреса.

Так что всегда лучше использовать window.location.

2 голосов
/ 11 декабря 2011

document.location.constructor === window.location.constructor - это true.

Это потому, что это точно такой же объект, как вы можете видеть из document.location===window.location.

Так что нет необходимости сравнивать конструктор или любое другое свойство.

0 голосов
/ 17 ноября 2017

На самом деле я замечаю разницу в Chrome между обоими. Например, если вы хотите выполнить переход к изолированному фрейму из дочернего фрейма, вы можете сделать это только с document.location, но не с window.location

0 голосов
/ 05 мая 2017

Несмотря на то, что большинство людей рекомендуют здесь, вот как 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 предпочитает document.location - window.location, когда им нужен протокол в JS, я думаю, у них есть некоторые причины для этого.

OVERALL :Я лично считаю, что document.location и window.location - это одно и то же, но если гигант с самой большой статистикой об использовании браузеров, таких как Google , использующий document.location , я рекомендую следовать им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...