Javascript перезагрузит страницу с хеш-значением

80

Я пытаюсь обновить страницу с помощью этого оператора во внешнем файле javascript после некоторых процессов.

window.location.href = window.location.href

Он отлично перезагружает страницу, но я хочу прокрутить до определенного места после перезагрузки. Итак, я поместил это на страницу.

<a name="uploadImgSection"></a>

И измените javascript на

window.location.href = window.location.href + "#mypara";

Этот код также не перезагружает / не обновляет страницу

window.location.hash = "#uploadImgSection";
window.location.href = window.location.href;

Когда я это делаю, страница вообще не перезагружается. Есть ли способ перезагрузить страницу с положением полосы прокрутки?

Йонас Т
источник
Использовать файл PHP для перенаправления на новую страницу?
Derek 朕 會 功夫
Не только html-страница. Цель состоит в том, чтобы обновить страницу после запуска некоторых функций javascript и прокрутить ее до позиции этого абзаца.
Jonas T
1
как ты звонишь window.location.href? если вы делаете это при загрузке страницы, и вы нажимаете f5, и вы используете firefox (или другой браузер, который прокручивает то место, где вы были до f5 при обновлении), это может быть проблемой
ajax333221

Ответы:

157
window.location.href += "#mypara";
location.reload();

Сначала добавьте хеш, затем перезагрузите страницу. Хеш останется там, и страница будет перезагружена.

Проверено, работает.


пс: Если хэш уже существует в URL, вы можете напрямую изменить его с помощью location.hashвместо .href.

Дерек 朕 會 功夫
источник
1
Еще одно. Он обновил страницу, но после перезагрузки содержит данные публикации. Как их почистить? Эти данные не позволяют мне удалить строку данных.
Jonas T
Пожалуйста прочтите это. stackoverflow.com/questions/2405117/… Он включает те данные POST, которые не позволяют мне выполнять другие события обратной передачи.
Jonas T
Ну, я мало что знаю о POST. Однако вы можете задать новый вопрос об этом, если хотите.
Derek 朕 會 功夫
1
Что ж, мне наконец пришлось использовать строку запроса. "window.location.href = url +" & action = reload ";". Проверьте строку запроса действия в javascripot при событии загрузки страницы и сделайте следующее: "window.location.hash =" #uploadImgSection ";". Это не так, как должно работать, но мне пришлось сделать это пока что так.
Jonas T
@Derek 朕 會 功夫 ты гений :)
Аттила Наги
35

Я хотел обновить этот вопрос, потому что обнаружил, что использование window.location.href += "#mypara"будет продолжать добавлять параметр к URL-адресу, даже если он существует. Я нашел лучший способ использовать

window.location.hash = "#mypara"
location.reload();
ug_
источник
25

Это действительно старый пост, я бы все равно попробовал ответить правильной комбинацией ответов.

  1. location.reload()и location.reload(true)работает как F5 в браузере. Это отправит все данные формы обратно на сервер, если это сделала ранее загрузка.
  2. location.hrefне будет обновлять страницу до тех пор, пока браузер не распознает изменение URL. изменение хэша (#paramname) не соответствует требованиям для изменения URL-адреса, и, следовательно, просто выполнить location.href+="#paramname"его не получится.

Итак, location.href+="?anything#paramname"следует перезагрузить страницу как новый запрос, как ?anythingи изменение URL-адреса.

JayB
источник
Хороший ответ. Вот готовая версия: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((new Date ()). GetTime ()% 1000000000) + '# myhash';
Johan
4
Еще один: location.href + = '& rand =' + Math.rand () + '# myhash';
Johan
ИМО, это лучший ответ на вопрос по сравнению с другими сообщениями. Он не требует изменения базового кода, который, например, мог быть написан как часть библиотеки.
thekingoftruth
1
Johan, Math.rand () следует заменить на Math.random ()
tomJO
Ближайший ответ (возможно, другие ответы были правильными в 2012 году, но все они неверны в 2018 году), но у него есть проблема с добавлением записей в историю адресной строки пользователя, что не очень хорошо, если вы просто пытались обновить то же самое историческое состояние ...
Гленн Мейнард
0
var loc = location.hash;
location.hash = " ";
location.hash = loc;
Пандиманикандан А
источник
Только кодовые ответы не очень полезны. Что это делает? Почему это работает?
random_user_name
-1

Попробуй это

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";
Hearaman
источник
4
Это тоже не перезагружает страницу.
Jonas T
Ответы только на "Попробуйте этот" код не очень полезны. Что он делает? Почему это работает?
random_user_name
-1

Это сработало для меня:

var tabValue = document.URL;
window.location = tabValue.substring(0, tabValue.lastIndexOf("#"));
window.location.hash = "#tabs-3"; //Whatever is your hash value
location.reload();
Амит
источник
-1

Эта работа для меня

window.location.href = baseUrl + "#/m/team";
 location.reload();
МК Шах
источник
-1

Это сработало для меня

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});
Кайлаш Чандра Паниграхи
источник
Похоже, что это в основном более длительный способ сделать то, что уже делают другие ответы, плюс я не думаю, что он включает часть #myPara, поэтому не будет работать так, как того хочет исходный плакат, хотя, пожалуйста, отредактируйте ответ, чтобы уточнить, что если Я не прав.
blm