Посилання для перезавантаження поточної сторінки


175

Чи можливо мати нормальне посилання, що вказує на поточне місцеположення?

Наразі я знайшов 2 рішення, але одне з них включає JavaScript, а в іншому ви повинні знати абсолютний шлях до сторінки:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

Чи існує якийсь спосіб зробити це, не використовуючи JavaScript чи знаючи абсолютний шлях?

Відповіді:


198

Я використовую:

<a href=".">link</a>

Потрібно ще знайти корпус та / або веб-переглядач, де він не працює за призначенням.

Період означає поточний шлях. Ви також можете використовувати ..для посилання на папку над поточним шляхом, наприклад, якщо у вас є така файлова структура:

page1.html
folder1
    page2.html

Потім ви можете page2.htmlнаписати:

<a href="../page1.html">link to page 1</a>

Редагувати:

Я не впевнений, чи змінилася поведінка чи вона завжди була такою, але Chrome (і, можливо, інші) розглядатиме описані вище періоди як стосовно каталогів , а не файлів. Це означає, що якщо ви перебуваєте у http://example.com/foo/bar.htmlвас, ви дійсно знаходитесь в каталозі, /foo/і hrefзначення .in bar.htmlбуде посилатися на, /foo/а не на значенняbar.html

Подумайте про це як навігацію по файловій системі в терміналі; ви ніколи не можете cdувійти до файлу :)

EDIT 2:

Схоже, поведінка використання href="."вже не така передбачувана, як Firefox та Chrome, можливо, змінили спосіб їх вирішення. Я б не покладався повністю на свою оригінальну відповідь, а скоріше спробуйте як порожню рядок, так і період у різних браузерах для вашого конкретного використання та переконайтеся, що ви отримаєте бажану поведінку.


25
Слід зазначити, що дані GET не зберігаються за допомогою цього методу, вважайте це "важким перезавантаженням". Використання порожнього значення href збереже дані GET, але чітке хеш-значення (наприклад, #these). Використовуючи # або? як значення href додасть "сміття" до нової URL-адреси. Я виявив, що використання періоду - найчистіший спосіб досягти перезавантаження.
Маркус Амальтея Магнусон

5
Ця методика не працює для мене на mac chrome. Хоча використовуючи "." як anhor, він поводиться так, ніби ".." і посилається на батьківську сторінку. наприклад / admin / речі стають / admin. Хтось ще бачив таку поведінку?
Зак

3
Це рішення неправильне. Також у Chrome не працює і вказує на батьківський каталог. Ви повинні використовувати порожній href, як підказує @MarkusAmaltheaMagnuson
coorasse

8
Здається, це працює лише в тому випадку, якщо компонент шляху URL-адреси закінчується символом a /.
Кос

6
На сьогодні це не працює у Firefox чи Chrome. Обидва браузери посилаються на батьківський каталог (не поточну сторінку), використовуючи href = ".
jtubre

135

Жоден з інших відповідей не встановить жодних значень рядків запитів. Спробуйте

<a href="javascript:window.location.href=window.location.href">

Дійсно, що це включає javascript, але, якщо у ваших користувачів відключений сценарій, це досить просто.


5
Не працює для мене (Google Chrome 32). Я віддаю перевагу <a href="javascript:location.reload() ;"> </a>
Габріель

3
Я використовую Google Chrome 36.0.1985 і javascript: window.location.href = window.location.href працює. location.reload () надає невдалий ефект спонукання користувача, якщо він бажає оновити сторінку в Firefox і, залежно від сценарію, може не забезпечити бажаного результату. Дивіться stackoverflow.com/questions/2405117/… для отримання додаткової дискусії.
Саймон Моллой

1
Я використовую кутовий з маршрутизацією. Це для мене не вийшло. Однак це справді спрацьовує -> <a href="javascript:"> click me </a>
Джон Генкель

Що робити, якщо js вимкнено?

5
Це рішення не зберігає якорів
thomas.winckell

77

Один із способів використання javascript:

<a href="javascript:window.location.reload(true)">Reload</a>

4
Зберігає запити та анкери ( ?query=string#anchor). Чудово!
analog-nico

Я відповів цією відповіддю, оскільки положення прокрутки також збережено. Корисно, якщо ви використовуєте перезавантаження як псевдо кнопку "скасувати".
igneosaur

Це розлад працює НА Клієнта React
Андрія

Ви можете, будь ласка, детальніше розглянути, як використовувати це у синтаксисі html?
Джоанна Миколай

У мене виникає запитання, чи trueсправді параметр, з яким ви повинні піти з цією проблемою при використанні window.location.reloadметоду? Це зробить важким оновлення, що дозволяє уникнути витягування з кешу, що може бути те, що ви хочете за певних обставин, але я думаю, що в більшості ситуацій ви хочете скористатися кешем, чи не так?
Stephen M Irving

31

Ви можете це зробити: <a href="">This page</a>

але я не думаю, що він зберігає дані GET та POST.


3
На жаль, це не працює в IE. Від: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Якщо HREF вказано як порожнє значення (href = "" або href =), виконання посилання може відобразити дисплей каталог, що містить поточний документ, або він може генерувати помилку, залежно від інших елементів документа та середовища сервера.
Богдан Лизанець

12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

12
Я не використовую PHP.
Тайло

3
Помітив -1, можливо, це не рішення у вашому випадку (тому що це рішення PHP), але я думаю, що це найчистіше рішення тут. Це означає, що він дає дійсне значення атрибуту href, він є найчистішим. Якщо можливо, уникайте JavaScript. Так +1.
rofavadeka

Ви дуже корисні. Чому це стає великими пальцями? Оригінальне запитання не згадує і js, і більшість q тут посилаються на JS ...
Ендрю

@Andrew початкове запитання позначено тегами #html та #hyperlink. Хоча, звичайно, "звичайне посилання, що вказує на поточне місце розташування" - це неймовірно розпливчасте опис, я майже впевнений, що його можна розумно трактувати як пошук рішення лише для клієнта. Якір, де href заповнений PHP, не є "нормальною ланкою" на будь-якій ділянці, це PHP-код.
ендемічний

@endemic Припускати, що javascript - це "нормально", а php - не є думкою. ОП фактично визначає нормальне, оскільки не включає JavaScript і не використовує абсолютний шлях. Цікаво, що більшість відповідей знаходяться у JavaScript.
Андрій

10

використовувати це для перезавантаження / оновлення поточної сторінки

<a href="#" onclick="window.location.reload(true);">

або використовувати

<a href="">refresh</a>


7

<a href="https://stackoverflow.com/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>


3
це працює лише в тому випадку, якщо ви знаходитесь на index.html або іншому кореневому документі / URL
Стівен

@Stephen звичайно. Ви абсолютно праві. Мабуть, я більш жорстокий, ніж я думав. Я просто протестував це дуже швидко і трапився на корені.
Томас Шилдс

Дуже добре працює, коли URL-адреса є, наприклад. / блаблабла тоді. поверне мене до коріння.
Августин Рідінгер

6

На жаль, немає глобального способу зробити це, на жаль, лише за допомогою HTML. Ви можете спробувати зробити, <a href="">test</a>однак це працює лише в деяких браузерах.


Це не працює в IE. Від: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Якщо HREF вказано як порожнє значення (href = "" або href =), виконання посилання може відобразити дисплей каталог, що містить поточний документ, або він може генерувати помилку, залежно від інших елементів документа та середовища сервера.
Богдан Лизанець

1
Я протестував, і він працює у всіх основних сучасних браузерах (Chrome, Firefox, Edge, Opera, Safari)
Дональд Дак

5

Повністю idempotent URL-адреса, яка зберігає шлях, параметри та якір.

 <a href="javascript:"> click me </a>

він використовує лише трохи крихітного JS.

РЕДАКТУВАННЯ: це не перезавантажує сторінку. Це посилання, яка нічого не робить.


@FranciscoCorralesMorales, Вибачте, але я думаю, що я неправильно зрозумів питання. Я думав, що ОП намагається зробити зв’язок, який нічого не робить. Але зараз я бачу, що ОП хоче посилання, яке перезавантажить поточну сторінку. (Я відредагую).
Джон Генкель

Дякуємо за цей фрагмент коду, який може надати негайну допомогу. Правильне пояснення значно покращило б його навчальну цінність, показавши, чому це хороше рішення проблеми, і зробило б її кориснішою для майбутніх читачів із подібними, але не однаковими питаннями. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
Toby Speight


2

Хоча прийнята відповідь не працювала для мене в IE9, це:

<a href="?">link</a>

1
Я не думаю, що це спрацює, якщо вам цікаво зберегти параметри запитів.
WynandB

1
@WynandB правильний. це знищить усі параметри GET та POST. якщо це те, що ви хочете, або якщо вам все одно, цей трюк чудово працює.
hanshenrik

2

Ще одне рішення

<a href="javascript:history.go(0)">Reload</a>

Гарне рішення! Одним крихітним підказом для цього методу є 0 - параметр за замовчуванням, тому, якщо ви намагаєтеся перезавантажити, ви можете просто написати: history.go()без аргументу.
Стівен М Ірвінг

2
<a href="">Refresh!</a>

Залиште href=""порожнє, і воно оновить сторінку.
Також працює, якщо деяка інформація передається за допомогою форм.


0

Я використовую JS, щоб показувати лише div з певним ідентифікатором на сторінці тегів на сайті jekyll. Маючи набір посилань на одній сторінці, ви показуєте відповідний елемент:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

посилання використовують посилання типу:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>

0

Ви можете використовувати форму, щоб зробити POST з тією ж URL-адресою.

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

Це дає вам кнопку, яка оновлює поточну сторінку. Це трохи дратує, оскільки якщо користувач натисне кнопку оновлення браузера, він отримає do you want to resubmit the formповідомлення.


0

Я ВИКОРИСТОВУЙТЕ HTML для вирішення цієї проблеми
Використання:

<a href="page1.html"> Link </a>

* page1.html -> введіть ім'я файлу, над яким ви працюєте (поточний HTML-файл)


Відредагуйте публікацію. Не зрозуміло, якою мовою програмування ви користуєтесь, як ви намагалися реалізувати код тощо.
Roee Anuar

Я використовував HTML для виконання цього завдання.
Аюш Кумар

-1
<a href="/">Same domain, just like refresh</a>

Здається, працює лише в тому випадку, якщо на вашому веб-сайті є index.html, index.htm або index.php (будь-яка сторінка за замовчуванням).

Але, схоже, те .саме і більше прийнято

<a href=".">Same domain, just like refresh, (more used)</a>

Обидва ідеально працюють у Chrome, коли домен є http://іhttps://


-2

<a href="https://stackoverflow.com/home" target="_self">Reload the page</a>


Проблема полягає в тому, що якщо ми не знаємо URL-адресу ... target = "_ self" може бути відхилено
Hafenkranich

-3

Якщо ви використовуєте шаблони php / smarty, ви можете зробити щось подібне:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>

-4

Просто додайте target = "_ blank", і посилання відкриє нову сторінку, зберігаючи початкову сторінку.


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