History API

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

History API cung cấp quyền truy cập vào lịch sử phiên của trình duyệt, không nên nhầm lẫn với WebExtensions history, thông qua đối tượng toàn cục history. Nó cung cấp các phương thức và thuộc tính hữu ích cho phép bạn điều hướng qua lại trong lịch sử của người dùng, cũng như thao tác nội dung của ngăn xếp lịch sử.

Note: API này chỉ khả dụng trên luồng chính (Window). Không thể truy cập nó trong các ngữ cảnh Worker hoặc Worklet.

Khái niệm và cách dùng

Việc di chuyển lùi và tiến trong lịch sử của người dùng được thực hiện bằng các phương thức back(), forward()go().

Di chuyển tiến và lùi

Để di chuyển lùi trong lịch sử:

js
history.back();

Điều này hoạt động đúng như khi người dùng nhấn nút Back trên thanh công cụ của trình duyệt.

Tương tự, bạn có thể di chuyển tiến, giống như khi người dùng nhấn nút Forward, như sau:

js
history.forward();

Di chuyển đến một vị trí cụ thể trong lịch sử

Bạn có thể dùng phương thức go() để tải một trang cụ thể từ lịch sử phiên, được xác định bởi vị trí tương đối của nó so với trang hiện tại. (Vị trí tương đối của trang hiện tại là 0.)

Để lùi một trang (tương đương với việc gọi back()):

js
history.go(-1);

Để tiến một trang, tương tự như gọi forward():

js
history.go(1);

Tương tự, bạn có thể tiến 2 trang bằng cách truyền 2, và cứ tiếp tục như vậy.

Một cách dùng khác của phương thức go() là tải lại trang hiện tại bằng cách truyền 0 hoặc gọi nó mà không có đối số:

js
// Hai câu lệnh sau
// đều có tác dụng
// tải lại trang
history.go(0);
history.go();

Bạn có thể xác định số lượng trang trong ngăn xếp lịch sử bằng cách xem giá trị của thuộc tính length:

js
const numberOfEntries = history.length;

Giao diện

History

Cho phép thao tác lịch sử phiên của trình duyệt, tức là các trang đã được truy cập trong tab hoặc khung mà trang hiện tại đang được tải.

PopStateEvent

Giao diện của sự kiện popstate.

Ví dụ

Ví dụ sau gán một trình nghe cho sự kiện popstate. Sau đó nó minh họa một số phương thức của đối tượng history để thêm, thay thế và di chuyển trong lịch sử trình duyệt của tab hiện tại.

js
window.addEventListener("popstate", (event) => {
  alert(
    `location: ${document.location}, state: ${JSON.stringify(event.state)}`,
  );
});

history.pushState({ page: 1 }, "title 1", "?page=1");
history.pushState({ page: 2 }, "title 2", "?page=2");
history.replaceState({ page: 3 }, "title 3", "?page=3");
history.back(); // alerts "location: http://example.com/example.html?page=1, state: {"page":1}"
history.back(); // alerts "location: http://example.com/example.html, state: null"
history.go(2); // alerts "location: http://example.com/example.html?page=3, state: {"page":3}"

Thông số kỹ thuật

Thông số kỹ thuật
HTML
# the-history-interface

Tương thích trình duyệt

Xem thêm