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 для переспрямування на нову сторінку?
Дерек 朕 會 功夫

Не просто 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. Ви можете задати нове запитання щодо цього, якщо хочете.
Дерек 朕 會 功夫

1
Ну, нарешті мені довелося використовувати рядок запиту. "window.location.href = url +" & action = reload ";". Перевірте рядок запиту дії у javascripot при події завантаження сторінки та виконайте це "window.location.hash =" #uploadImgSection ";". Це не так, як це повинно працювати, але мені довелося зробити це зараз.
Йонас Т,

@Derek 朕 會 功夫 ти геній :)
Аттіла Нагі

35

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

window.location.hash = "#mypara"
location.reload();

25

Це справді стара публікація, я все одно спробував би відповісти правильною комбінацією відповідей.

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

Отже, location.href+="?anything#paramname"слід перезавантажити сторінку як новий запит, як ?anythingі зміна URL-адреси.


Приємна відповідь. Ось приготовлена ​​версія: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((нова дата ()). GetTime ()% 1000000000) + '# myhash';
Йохан

4
Ще один: location.href + = '& rand =' + Math.rand () + '# myhash';
Йохан

ІМО відповідає на запитання найкраще порівняно з іншими повідомленнями. Це не вимагає змін базового коду, який, можливо, був написаний як частина бібліотеки, наприклад.
thekingoftruth

1
Йохан, Math.rand () слід змінити на Math.random ()
tomJO

Найближча відповідь (можливо, інші відповіді були правильними в 2012 році, але всі вони помиляються в 2018 році), але вона має проблему додавання записів в історію адресного рядка користувача, що погано, якщо ви просто намагалися оновити той самий стан історії ...
Гленн Мейнард,


-1

Спробуйте це

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";

4
Це також зовсім не перезавантажує сторінку.
Йонас Т,

"Спробувати цей" код, відповіді лише не дуже корисні. Що це робить? Чому це працює?
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

Це спрацювало для мене

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});

Це, здається, в основному довший спосіб робити те, що вже роблять інші відповіді, плюс я не думаю, що він включає частину #myPara, тому не буде працювати так, як хоче оригінальний плакат, хоча, будь ласка, відредагуйте відповідь, щоб пояснити, що якщо Я помиляюся.
blm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.