Як зробити зворотне посилання HTML?


286

Який найпростіший спосіб створити <a>тег, який посилається на попередню веб-сторінку? В основному імітація кнопки повернення, але фактичне гіперпосилання. Будь ласка, лише на стороні клієнтів.

Редагувати
Шукаєте рішення, які мають користь показувати URL-адресу сторінки, на яку ви збираєтесь натиснути, коли навести курсор, як звичайне статичне гіперпосилання. Я вважаю за краще, щоб користувач не дивився, history.go(-1)коли наводиться на гіперпосилання. Найкраще, що я знайшов поки що:

<script>
  document.write('<a href="' + document.referrer + '">Go Back</a>');
</script>

Є чи document.referrerнадійний? Перехресний браузер безпечний? Я з радістю прийму кращу відповідь.


2
JavaScript - це технологія на стороні клієнта, деякі клієнти (як я) просто вирішують відключити її (за замовчуванням). Оце сила клієнта! : D Але так, HTML не може самостійно визначити, якою була попередня сторінка.
animuson

Відповіді:


514

І ще один спосіб:

<a href="javascript:history.back()">Go Back</a>


9
А для кнопки:<button type="button" onclick="javascript:history.back()">Back</button>
Лев

1
Недоліком цього підходу є те, що стандартні функції браузера, такі як "навести курсор на URL-адресу" та клацнути правою кнопкою миші -> посилання на копіювання, буде порушено.
Vivek Maharajh

Я думаю, що це більше стосується семантики. "Кнопка" повернення назад більш доречна, ніж "посилання назад". Обидва варіанти чудові, і обидва варіанти по-своєму правильні.
Джаспрет Сінгх

111

Це рішення має перевагу показу URL-адреси пов’язаної сторінки на вказівник миші, як це робить більшість браузерів за замовчуванням замість того history.go(-1)чи іншого:

<script>
    document.write('<a href="' + document.referrer + '">Go Back</a>');
</script>

9
Це також має перевагу в тому, що справа охоплює те, що довідкова сторінка відкривається target="_blank"атрибутом посилання, що history.go(-1)не робить.
Кріс Кричо

4
Це рішення втрачає частину посилання після #, 'javascript: history.back ()' працює правильно.
Лівіу

16
Мінусом цього рішення є те, що ви не зможете повернутися більше ніж на одну сторінку. Приклад; перейти на сторінки a, b, c, d - кілька разів натискати кнопку назад c, d, c, d, c, d. Порівняйте це з .history.back () a, b, c, d кілька разів натискайте кнопку назад, c, b, a
atreeon

Як зробити так, щоб у випадку, якщо немає зворотної сторінки, перенаправити на фіксований URLhistory.back() || "myaction/mycontroller"
гніздо

@orangesherbert Я вирішив це у новій відповіді (яка також відповідає вимозі "показати URL".
Vivek Maharajh,

44

Найпростіший спосіб - це використовувати history.go(-1);

Спробуйте це:

<a href="#" onclick="history.go(-1)">Go Back</a>


41

ви можете спробувати JavaScript

<A HREF="javascript:history.go(-1)">

зверніться до кнопки "Назад JavaScript"

EDIT

відобразити URL посилання http://www.javascriptkit.com/javatutors/crossmenu2.shtml

і надішліть елемент a сам в onmouseover, як описано нижче

function showtext(thetext) {
  if (!document.getElementById)
    return
  textcontainerobj = document.getElementById("tabledescription")
  browserdetect = textcontainerobj.filters ? "ie" : typeof textcontainerobj.style.MozOpacity == "string" ? "mozilla" : ""
  instantset(baseopacity)
  document.getElementById("tabledescription").innerHTML = thetext.href
  highlighting = setInterval("gradualfade(textcontainerobj)", 50)
}
 <a href="http://www.javascriptkit.com" onMouseover="showtext(this)" onMouseout="hidetext()">JavaScript Kit</a>

перевірити jsfiddle


Ви можете пояснити цю останню редакцію? Я просто хочу нормальне посилання, як це відображається в нижній частині більшості браузерів.
paislee

як показує все браузер, для цього вам нічого не потрібно робити, але якщо ви хочете показати його у своєму власному div, ви можете вказати div у tabledescriptionбудь-якій частині сторінки, щоб відобразити посилання на тег прив’язки на миші
Hemant Metalia

40

Це рішення дає вам найкраще з обох світів

  • Користувачі можуть навести курсор на посилання, щоб побачити URL-адресу
  • Користувачі не мають зіпсованого резервного стека

Детальніше в коментарях до коду нижче.

var element = document.getElementById('back-link');

// Provide a standard href to facilitate standard browser features such as 
//  - Hover to see link
//  - Right click and copy link
//  - Right click and open in new tab
element.setAttribute('href', document.referrer);

// We can't let the browser use the above href for navigation. If it does, 
// the browser will think that it is a regular link, and place the current 
// page on the browser history, so that if the user clicks "back" again,
// it'll actually return to this page. We need to perform a native back to
// integrate properly into the browser's history behavior
element.onclick = function() {
  history.back();
  return false;
}
<a id="back-link">back</a>


Дивовижна відповідь. Я використовую це майже у всіх моїх нокаутних проектах у контексті користувацької прив'язки.
сутенери

Чудова відповідь! Довелося додатиreturn false; функцію onclick у Chrome, щоб не додавати поточну сторінку до історії браузера.
Маршалл Морріс

25

Для повернення до попередньої сторінки за допомогою тегу прив’язки <a>нижче наведено два методи роботи, з них 1-й - швидший і має одну велику перевагу - повернутися до попередньої сторінки.

Я спробував обидва способи.

1)

<a href="#" onclick="location.href = document.referrer; return false;">Go Back</a>

Вищенаведений метод (1) чудово працює, якщо ви натиснули на посилання та відкрили посилання на новій вкладці у поточному вікні браузера.

2)

<a href="javascript:history.back()">Go Back</a>

Вищеописаний метод (2) працює добре, лише якщо ви натиснули на посилання та відкрили посилання на вкладці Поточна в поточному вікні браузера.

Він не працюватиме, якщо у вас є відкрите посилання в Новій вкладці. Осьhistory.back() не вийде, якщо посилання відкриється в Новій вкладці веб-браузера.


18

Зворотне посилання - це посилання, яке пересуває браузер назад на одну сторінку, ніби користувач натиснув кнопку Назад, доступну в більшості браузерів. Зворотні посилання використовують JavaScript. Він переміщує браузер на одну сторінку, якщо ваш браузер підтримує JavaScript (що він робить) і якщо він підтримуєwindow.history об'єкт, необхідний для зворотних посилань.

Прості способи є

<a href="#" onClick="history.go(-1)">Go Back</a>

АБО:

function goBack() {
  window.history.back()
}
<a href="#" onclick="goBack()" />Go Back</a>

Взагалі зворотне посилання не потрібно ... Кнопка "Назад" зазвичай досить непогано, і зазвичай ви також можете просто посилатися на попередню сторінку свого сайту. Однак іноді, можливо, вам захочеться повернути посилання на одну з декількох "попередніх" сторінок, і саме тому зворотне посилання стане в нагоді. Тому я посилаюсь на вас нижче підручника, якщо ви хочете зробити це більш досконалим способом:

http://www.htmlcodetutorial.com/linking/linking_famsupp_108.html


2
На відміну від найбільш проголосованого рішення, це підтримує позицію прокрутки, яку мав користувач.
Кетрі

@Ketri чи можете ви надати підтримку заяви? вони повинні бути однаковими: w3schools.com/jsref/met_his_back.asp
FarO



1

Ви також можете використовувати history.back()поряд, document.write()щоб показувати посилання лише тоді, коли насправді є куди повернутися:

<script>
  if (history.length > 1) {
    document.write('<a href="javascript:history.back()">Go back</a>');
  }
</script>

document.writeперезаписує все на сторінці. Навіщо ти коли-небудь це використовував?
jpaugh

Ви повинні виконати цей скрипт, поки сторінка все ще завантажується.
Леонід Василев

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