Làm thế nào để tạo một liên kết trở lại HTML?


286

Cách đơn giản nhất để tạo một <a>thẻ liên kết đến trang web trước đó là gì? Về cơ bản là một nút quay lại mô phỏng, nhưng một siêu liên kết thực tế. Xin vui lòng chỉ các công nghệ phía khách hàng.

Chỉnh sửa
Tìm kiếm các giải pháp có lợi ích hiển thị URL của trang bạn sắp nhấp vào khi di chuột, như một siêu liên kết tĩnh, bình thường. Tôi không muốn người dùng nhìn vào history.go(-1)khi di chuột trên một siêu liên kết. Tốt nhất tôi tìm thấy cho đến nay là:

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

document.referrerđáng tin cậy không? Đa trình duyệt có an toàn? Tôi sẽ rất vui khi chấp nhận một câu trả lời tốt hơn.


2
JavaScript là công nghệ phía máy khách, một số khách hàng (như tôi) chỉ cần chọn tắt nó (theo mặc định). Đó là sức mạnh của khách hàng! : D Nhưng vâng, không có cách nào để HTML tự xác định trang trước đó là gì.
phim hoạt hình

Câu trả lời:


513

Và một cách khác:

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


9
Và cho một nút:<button type="button" onclick="javascript:history.back()">Back</button>
Leo

1
Một nhược điểm của phương pháp này là các tính năng trình duyệt tiêu chuẩn như "di chuột để xem URL" và nhấp chuột phải -> liên kết sao chép sẽ bị hỏng.
Vivek Maharajh

Tôi nghĩ đó là về ngữ nghĩa. "Nút" quay lại có nhiều khả năng hơn là "liên kết" quay lại. Cả hai tùy chọn đều tuyệt vời và cả hai tùy chọn đều chính xác theo cách riêng của chúng.
Jaspreet Singh

111

Giải pháp này có lợi ích là hiển thị URL của trang được liên kết khi di chuột, vì hầu hết các trình duyệt làm theo mặc định, thay vì history.go(-1)hoặc tương tự:

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

9
Điều này cũng có lợi ích bao gồm trường hợp trang giới thiệu được mở bằng một target="_blank"thuộc tính trên liên kết, history.go(-1)không có.
Chris Krycho

4
Giải pháp này mất phần liên kết theo sau #, 'javascript: history.back ()' hoạt động chính xác.
Liviu

15
Nhược điểm của giải pháp này là bạn sẽ không thể quay lại nhiều hơn một trang. Thí dụ; điều hướng đến các trang a, b, c, d - nhấn nút quay lại nhiều lần c, d, c, d, c, d. So sánh điều này với .history.back () a, b, c, d nhấn nút quay lại liên tục d, c, b, a
atreeon

Làm cách nào tôi có thể làm cho nó để trong trường hợp không có trang sau, sau đó chuyển hướng đến một url cố địnhhistory.back() || "myaction/mycontroller"
lồng

@orangesherbert Tôi đã giải quyết vấn đề này trong một câu trả lời mới (cũng đáp ứng yêu cầu "hiển thị URL".
Vivek Maharajh


41

bạn có thể thử javascript

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

tham khảo nút quay lại JavaScript

BIÊN TẬP

để hiển thị url giới thiệu http://www.javascriptkit.com/javatutors/crossmenu2.shtml

và gửi phần tử chính nó trong onmouseover như sau

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>

kiểm tra jsfiddle


bạn có thể giải thích rằng chỉnh sửa cuối cùng? tôi chỉ muốn một liên kết bình thường như nó hiển thị ở dưới cùng của hầu hết các trình duyệt.
paislee

vì tất cả các trình duyệt hiển thị cho tất cả những gì bạn không cần phải làm gì nhưng nếu bạn muốn hiển thị nó trong div của riêng mình, bạn có thể chỉ định div tabledescriptionở bất cứ đâu trong trang để hiển thị liên kết trên chuột trên thẻ neo
Hemant Metalia

40

Giải pháp này mang đến cho bạn những điều tốt nhất của cả hai thế giới

  • Người dùng có thể di chuột qua liên kết để xem URL
  • Người dùng không kết thúc với một back-stack bị hỏng

Thêm chi tiết trong các ý kiến ​​mã dưới đây.

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>


Câu trả lời tuyệt vời. Tôi sử dụng điều này trong hầu hết các dự án loại trực tiếp của mình trong bối cảnh ràng buộc tùy chỉnh.
pimbrouwers

Câu trả lời chính xác! Tôi đã phải thêm return false;vào chức năng onclick trong Chrome để ngăn nó thêm trang hiện tại vào lịch sử trình duyệt.
Marshall Morrise

25

Đối sẽ trở lại trang trước sử dụng Neo Tag <a>, dưới đây là 2 phương pháp làm việc và ra khỏi họ 1st mộtnhanh hơn và có một lợi thế lớn trong việc đi lại lại trang trước.

Tôi đã thử cả hai phương pháp.

1)

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

Phương pháp trên (1) hoạt động rất tốt nếu bạn đã nhấp vào một liên kết và mở liên kết trong Tab mới trong cửa sổ trình duyệt hiện tại.

2)

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

Phương pháp trên (2) chỉ hoạt động tốt nếu bạn đã nhấp vào một liên kết và mở liên kết trong Tab hiện tại trong cửa sổ trình duyệt hiện tại.

Nó sẽ không hoạt động nếu bạn có liên kết mở trong Tab mới. Ở đây history.back()sẽ không hoạt động nếu liên kết được mở trong Tab mới của trình duyệt web.


18

Liên kết quay lại là liên kết di chuyển trình duyệt lùi một trang, như thể người dùng đã nhấp vào nút Quay lại có sẵn trong hầu hết các trình duyệt. Liên kết lại sử dụng JavaScript. Nó di chuyển trình duyệt trở lại một trang nếu trình duyệt của bạn hỗ trợ JavaScript (và nó hỗ trợ window.historyđối tượng), điều này cần thiết cho các liên kết ngược.

Những cách đơn giản là

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

HOẶC LÀ:

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

Nói chung, một liên kết quay lại không cần thiết, nút Back thường khá độc đáo và thông thường bạn cũng có thể chỉ cần liên kết đến trang trước trong trang web của mình. Tuy nhiên, đôi khi bạn có thể muốn cung cấp một liên kết trở lại một trong một số trang "trước đó" và đó là nơi liên kết trở lại có ích. Vì vậy, tôi giới thiệu bạn dưới đây hướng dẫn nếu bạn muốn làm theo cách nâng cao hơn:

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


2
Không giống như giải pháp được bình chọn nhiều nhất, điều này duy trì vị trí cuộn mà người dùng có.
Ketri

@Ketri bạn có thể cung cấp hỗ trợ cho tuyên bố? chúng phải giống hệt nhau: w3schools.com/jsref/met_his_back.asp
FarO

8

thử cái này

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


1

Bạn cũng có thể sử dụng history.back()cùng với document.write()để hiển thị liên kết chỉ khi thực sự có nơi nào đó để quay lại:

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

document.writeghi đè lên tất cả mọi thứ trên trang. Tại sao bạn sẽ không bao giờ sử dụng?
jpaugh

Bạn phải thực thi tập lệnh này trong khi trang vẫn đang tải.
Leonid Vasilev

0

Cách tốt nhất để sử dụng một nút là

<input type= 'button' onclick='javascript:history.back();return false;' value='Back'>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.