Javascript: Как по-настоящему перезагрузить сайт с помощью привязанного тега?

Возьмите этот фрагмент кода, например:

window.location.href = 'mysite.htm#images';

Уже находясь на сайте mysite.htm и запуская перезагрузку через location.href, вы не перезагружаете страницу, а переходите к якорю, указанному в URL-адресе.

Мне нужен механизм для действительно перезагрузки страницы. Любые идеи?

PS: Я пробовал использовать другие методы, но ни один из них не выполняет трюк: (

ИЗМЕНИТЬ
Не держите файл типа htm. Мне понадобится это и для динамических сайтов.

Ответ 1

После того, как вы установили указанный URL в местоположение, введите window.location.reload(true). Это заставит браузер перезагрузить страницу.

Ответ 2

используйте часть запроса URL для добавления случайной строки:

// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';

Ответ 3

Вы можете стать читерами и добавить рандомизированную строку запроса, перенаправляя "mysite.htm? random = 289954034 # images".

Но если это статическая страница, как следует из .htm, для чего вам нужно перезагрузить? Если это так, что ваш загрузочный Javascript может появиться во второй раз, возможно, вам просто нужно изменить поток приложений.

Ответ 4

Пока я чувствую, что ответ 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. Пожалуйста, дайте мне знать, если он не работает в каком-либо крупном браузере.

Ответ 5

Попробуйте следующее: window.location.href = 'mysite.htm?';

EDIT: Это будет работать только в первый раз; после этого кэширование снова вступит в силу.

Ответ 6

Работает с большинством браузеров 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