Відповіді:
Якщо я добре пам’ятаю, 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()єfalse
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);
Якщо ви додасте boolean true до перезавантаження,
window.location.reload(true)він завантажиться з сервера.
Не ясно , яким чином підтримується це логічне є, W3Org згадує , що NS використовується для підтримки його
МОЖЕ бути різниця між вмістом window.location.href та document.URL - там принаймні була різниця між location.href та нестандартним та застарілим документом.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;
оновлює сторінку набагато швидше, майже непомітно.
Провівши трохи більше досліджень та експериментуючи з фіддлером, схоже, що window.location.reload()це обійде кеш і перезавантажиться з сервера, незалежно від того, передаєте ви булевий з ним чи ні, це включає отримання всіх ваших активів (зображення, сценарії, таблиці стилів, тощо) знову. Тож якщо ви просто хочете, щоб сторінка оновлювала HTML, ця версія window.location = document.URLповернеться набагато швидше та з меншим трафіком.
Різниця в поведінці між браузерами полягає в тому, що коли IE9 використовує метод перезавантаження, він очищає видиму сторінку і, здавалося б, відновлює її з нуля, де FF і хром чекають, поки вони отримають нові активи та відновлять їх, якщо вони відрізняються.
Відмінність Firefox (12.0) полягає в тому, що на сторінці, створеній з POST, перезавантаження () з’явиться попередження та повторне повідомлення, а призначення 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>
(в деяких випадках для натискання цілі вам потрібно використовувати "повернути істину", щоб викликати перезавантаження)
Для отримання додаткової інформації ознайомтеся з цим питанням: чи дійсний порожній href?
window.location.href, це врятувало мені життя в веб-перегляді з Android 5.1. Сторінка не завантажується за допомогою сайту.reload () у цій версії з Android.