Ответы:
Если я правильно помню, 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)сделаем наоборот и загрузим страницу из кэша, если это возможно.
Если вы говорите, window.location.reload(true)браузер пропустит кэш и перезагрузит страницу с сервера. window.location.reload(false)сделаем наоборот
Примечание: defaultзначение window.location.reload()ISfalse
window.location.href = window.location.hrefсделал трюк.
location.reload()или location.reload(false). Чтобы сделать полное обновление страницы, используйте location.reload(true).
Разница в том, что
window.location = document.URL;
не будет перезагружать страницу, если в URL есть хеш (#) (с чем-либо или после него), тогда как
window.location.reload();
перезагрузит страницу.
location.href = location.hrefсамо собой разумеющимся, но я просто заметил такое поведение и пришел к ТАК, чтобы распространить информацию. Просто используйте location.reload()вместо этого.
window.location.replace(window.location.pathname);
Если вы добавите логическое значение true для перезагрузки,
window.location.reload(true)оно будет загружено с сервера.
Не ясно , как поддерживается этот логический том, W3Org упоминает , что NS используется для поддержки его
МОЖЕТ быть разница между содержимым window.location.href и document.URL - по крайней мере, раньше было различие между location.href и нестандартным и устаревшим document.location , связанным с перенаправлением, но это действительно последнее тысячелетие.
В целях документации я бы использовал window.location.reload (), потому что это то, что вы хотите сделать.
Как уже было сказано, изменение href при наличии хеша (#) в URL не приведет к перезагрузке страницы. Таким образом, я использую это для перезагрузки вместо регулярных выражений:
if (!window.location.hash) {
window.location.href = window.location.href;
} else {
window.location.reload();
}
Столкнулся с этим вопросом, исследуя какое-то ненормальное поведение в IE, в частности IE9, не проверял старые версии. Похоже на то
window.location.reload();
приводит к обновлению, которое отключает весь экран на секунду, где, как
window.location = document.URL;
обновляет страницу намного быстрее, почти незаметно.
Проведя немного больше исследований и поэкспериментировав с fiddler, кажется, что он window.location.reload()будет обходить кеш и перезагружаться с сервера независимо от того, передаете ли вы логическое значение с ним или нет, это включает получение всех ваших ресурсов (изображений, скриптов, таблиц стилей, и т.д.) еще раз. Поэтому, если вы просто хотите, чтобы страница обновляла HTML, window.location = document.URLона вернется гораздо быстрее и с меньшим трафиком.
Различие в поведении между браузерами заключается в том, что когда IE9 использует метод перезагрузки, он очищает видимую страницу и, по-видимому, перестраивает ее с нуля, где FF и chrome ждут, пока они получат новые ресурсы, и восстановят их, если они будут другими.
Отличие в Firefox (12.0) состоит в том, что на странице, отображаемой из POST, reload () выдаст предупреждение и сделает повторную публикацию, в то время как назначение URL выполнит GET.
Google Chrome делает GET для обоих.
Используя JSF, у меня теперь есть проблема с обновлением после истечения сеанса: PrimeFaces ViewExpiredException после перезагрузки страницы, и с некоторыми исследованиями я обнаружил одно отличие в FireFox:
Вызов window.location.reload()работает как нажатие значка обновления на FF, добавляет строку
Cache-Control max-age=0
хотя настройка window.location.hrefработает как нажатие клавиши ENTER в строке URL, она не отправляет эту строку.
Хотя оба они отправляются как GET, первый (перезагрузка) восстанавливает предыдущие данные, и приложение находится в несогласованном состоянии.
из моего опыта около 3 лет я не смог найти никакой разницы ...
edit: да, как сказал один из них, разница только в передаче логического параметра в window.location.reload (). если вы передаете true , то браузер загружает новую страницу, но если false , то загружается версия кеша ...
В нашем случае мы просто хотим перезагрузить страницу в веб-просмотре, и по некоторым причинам мы не могли понять почему! Мы пробуем почти все решения, которые были в сети, но застряли без перезагрузки, используя location.reload () или альтернативные решения, такие как window.location.reload (), location.reload (true), ...!
Вот наше простое решение:
Просто используйте тег <a> с пустым значением атрибута "href", например так:
< a href="" ...>Click Me</a>
(в некоторых случаях вы должны использовать «return true» при нажатии на цель, чтобы вызвать перезагрузку)
Для получения дополнительной информации проверьте этот вопрос: действителен ли пустой href?
window.location.href, это как спасло мою жизнь в веб-просмотре от Android 5.1. Страница не перезагружается с помощью location.reload () в этой версии с Android.