Подтвердить что ты не робот

Разница между window.location.href= window.location.href и window.location.reload()

В чем разница между

window.location.href = window.location.href

и

window.location.reload()

функции?

4b9b3361

Ответ 1

Если я правильно помню, window.location.reload() перезагружает текущую страницу данными POST, а window.location.href=window.location.href не включает данные POST.

Как отмечено @W3Max в комментариях ниже, window.location.href=window.location.href не перезагрузит страницу, если в URL-адресе есть якорь (#). В этом случае вы должны использовать window.location.reload().

Кроме того, как отмечено в @Mic ниже, window.location.reload() принимает дополнительный аргумент skipCache, поэтому при использовании window.location.reload(true) браузер пропустит кеш и перезагрузит страницу с сервера. window.location.reload(false) сделает все наоборот и загрузит страницу из кеша, если это возможно.

Ответ 2

Если вы скажете window.location.reload(true), браузер пропустит кеш и перезагрузит страницу с сервера. window.location.reload(false) поступит наоборот.

Примечание: значение default для window.location.reload() равно false

Ответ 3

Отличие состоит в том, что

window.location = document.URL;

не перезагружает страницу, если в URL есть хеш (#) (с или без чего-то после него), тогда как

window.location.reload();

перезагрузит страницу.

Ответ 4

Если вы добавите логическое значение true для перезагрузки window.location.reload(true) он будет загружаться с сервера.

Неясно, как поддерживается это логическое значение, W3Org упоминает, что NS использовал его для поддержки

Там может быть разница между содержимым window.location.href и document.URL - там, по крайней мере, была разница между location.href и нестандартный и устаревший document.location, который был связан с перенаправлением, но это действительно последнее тысячелетие.

В целях документации я бы использовал window.location.reload(), потому что это то, что вы хотите сделать.

Ответ 5

Как сказано, изменение href, когда есть хэш (#) в URL-адресе, не перезагружает страницу. Таким образом, я использую это, чтобы перезагрузить его вместо регулярных выражений:

if (!window.location.hash) {
    window.location.href = window.location.href;
} else {
    window.location.reload();
}

Ответ 6

В этом вопросе, исследующем некоторые отклоняющиеся действия в IE, в частности IE9, не проверялись более старые версии. Кажется,

window.location.reload();

приводит к обновлению, которое заполняет весь экран на секунду, где

 window.location = document.URL;

обновляет страницу гораздо быстрее, почти незаметно.

Проводя немного больше исследований и экспериментируя с скрипачом, кажется, что window.location.reload() будет обходить кеш и перезагружать сервер, независимо от того, передаете ли вы его логическое или нет, это включает в себя получение всех ваших активов (изображений, скрипты, таблицы стилей и т.д.). Поэтому, если вы просто хотите, чтобы страница обновляла HTML, window.location = document.URL будет возвращаться намного быстрее и с меньшим трафиком.

Разница в поведении между браузерами заключается в том, что, когда IE9 использует метод перезагрузки, он очищает видимую страницу и, по-видимому, перестраивает ее с нуля, где FF и chrome ждут, пока не получат новые активы и не перестроят их, если они отличаются.

Ответ 7

Разница в Firefox (12.0) заключается в том, что на странице, полученной из POST, reload() выведет предупреждение и сделает повторную запись, в то время как назначение URL сделает GET.

Google Chrome выполняет GET для обоих.

Ответ 8

Использование JSF, теперь у меня проблема с обновлением после истечения срока действия сессии: PrimeFaces ViewExpiredException после перезагрузки страницы, и с некоторым расследованием я нашел одно отличие в FireFox

Вызов window.location.reload() работает как щелчок на значке обновления в FF, он добавляет строку

Cache-Control max-age=0

а установка window.location.href работает как нажатие ENTER в строке URL, оно не отправляет эту строку.

Хотя оба отправляются как GET, первая (перезагрузка) восстанавливает предыдущие данные, и приложение находится в противоречивом состоянии.

Ответ 9

Нет, не должно быть. Однако, возможно, в некоторых браузерах существуют различия, поэтому либо (или ни один) может не работать в некоторых случаях.

Ответ 10

по моему опыту около 3 лет, я не мог найти разницы...

edit: да, как сказал один из них, только передача логического параметра в window.location.reload() - это разница. если вы передадите true, браузер загрузит новую страницу, но если false, то загружается версия кеша...

Ответ 11

В нашем случае мы просто хотим перезагрузить страницу в веб-просмотре, и по некоторым причинам мы не могли понять почему! Мы пробуем почти все решения, которые были в Интернете, но застряли без перезагрузки, используя location.reload() или альтернативные решения, такие как window.location.reload(), location.reload(true),...!

Вот наше простое решение:

Просто используйте & lt; a> тег с пустым значением атрибута "href", например:

< a href="" ...>Click Me</a>

(в некоторых случаях вы должны использовать "return true" при нажатии на цель, чтобы вызвать перезагрузку)

Для получения дополнительной информации проверьте этот вопрос: Допустим ли пустой href?

Ответ 12

window.location.href, это как спасло мою жизнь в веб-просмотре от Android 5.1. Страница не перезагружается с помощью location.reload() в этой версии с Android.