Ответ 1
После того, как вы установили указанный URL в местоположение, введите window.location.reload(true)
. Это заставит браузер перезагрузить страницу.
Возьмите этот фрагмент кода, например:
window.location.href = 'mysite.htm#images';
Уже находясь на сайте mysite.htm
и запуская перезагрузку через location.href
, вы не перезагружаете страницу, а переходите к якорю, указанному в URL-адресе.
Мне нужен механизм для действительно перезагрузки страницы. Любые идеи?
PS: Я пробовал использовать другие методы, но ни один из них не выполняет трюк: (
ИЗМЕНИТЬ
Не держите файл типа htm
. Мне понадобится это и для динамических сайтов.
После того, как вы установили указанный URL в местоположение, введите window.location.reload(true)
. Это заставит браузер перезагрузить страницу.
используйте часть запроса URL для добавления случайной строки:
// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';
Вы можете стать читерами и добавить рандомизированную строку запроса, перенаправляя "mysite.htm? random = 289954034 # images".
Но если это статическая страница, как следует из .htm
, для чего вам нужно перезагрузить? Если это так, что ваш загрузочный Javascript может появиться во второй раз, возможно, вам просто нужно изменить поток приложений.
Пока я чувствую, что ответ alemjerus находится в хорошем направлении, он не работает, когда новый URL указывает на другую страницу, по крайней мере, на моем Chrome v40.
Например, когда новый URL-адрес просто добавляет привязку, он отлично работает:
var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360';
window.location.href = redirectToURL;
window.location.reload(true);
Но когда он указывает на другую страницу, пользователь все равно останется на текущей странице после перезагрузки. (Запустите следующие коды в партии, без задержки между location.href=
и location.reload
):
var redirectToURL = 'http://stackoverflow.com';
window.location.href = redirectToURL;
window.location.reload(true);
В этом случае удалите location.reload
. Поэтому мой способ заключается в том, чтобы проверить, находится ли новый URL-адрес на одной странице:
var urlParser = document.createElement('a');
urlParser.href = redirectToURL;
if (urlParser.origin + urlParser.pathname === location.origin + location.pathname) {
window.location.reload(true);
}
Протестировано в Chrome и Safari, не пробовал IE. Пожалуйста, дайте мне знать, если он не работает в каком-либо крупном браузере.
Попробуйте следующее:
window.location.href = 'mysite.htm?';
EDIT: Это будет работать только в первый раз; после этого кэширование снова вступит в силу.
Работает с большинством браузеров Mozilla
<a title="Reset this Document" href="javascript:void()" onclick="window.location.href='#'"><font color="red">Reset</font></a>
Строка кода:
window.location.href='#'
or window.location.href=''
Последний код не будет работать с IE