Javascript: Как действительно перезагрузить сайт с тегом привязки? - PullRequest
27 голосов
/ 23 февраля 2010

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

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

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

Мне нужен механизм, чтобы действительно перезагрузить страницу. Есть идеи?

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

EDIT
Не вешайте на тип файла htm. Мне это нужно и для динамических сайтов.

Ответы [ 6 ]

55 голосов
/ 23 февраля 2010

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

8 голосов
/ 23 февраля 2010

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

// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';
4 голосов
/ 20 февраля 2015

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

3 голосов
/ 23 февраля 2010

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

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

1 голос
/ 23 февраля 2010

Попробуйте это: window.location.href = 'mysite.htm?';

РЕДАКТИРОВАТЬ: Это будет работать только в первый раз; после этого кеширование снова вступает в силу.

0 голосов
/ 02 августа 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...