Navigation: phương thức navigate()
Baseline
2026
Newly available
Since January 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức navigate() của
giao diện Navigation điều hướng đến một URL cụ thể, cập nhật bất kỳ trạng thái nào được cung cấp trong danh sách mục lịch sử.
Cú pháp
navigate(url)
navigate(url, options)
Tham số
url-
URL đích để điều hướng tới. Lưu ý rằng khi gọi
navigate()trên đối tượngnavigationcủa một cửa sổ khác, URL sẽ được giải quyết tương đối với URL của cửa sổ đích, không phải URL của cửa sổ gọi. Điều này khớp với hành vi của History API, nhưng không khớp với hành vi của Location API. Cũng lưu ý rằng URLjavascript:không được phép vì lý do bảo mật. optionsOptional-
Một đối tượng tùy chọn chứa các thuộc tính sau:
stateOptional-
Thông tin do nhà phát triển định nghĩa để lưu trong
NavigationHistoryEntryliên quan sau khi điều hướng hoàn tất, có thể truy xuất quagetState(). Đây có thể là bất kỳ kiểu dữ liệu nào. Ví dụ, bạn có thể muốn lưu số lượt truy cập trang cho mục đích phân tích, hoặc lưu chi tiết trạng thái UI để view có thể hiển thị chính xác như người dùng đã để lần cuối. Mọi dữ liệu lưu trongstatephải là có thể sao chép có cấu trúc. infoOptional-
Thông tin do nhà phát triển định nghĩa để truyền cùng với sự kiện
navigate, có sẵn trongNavigateEvent.info. Đây có thể là bất kỳ kiểu dữ liệu nào. Ví dụ, bạn có thể muốn hiển thị nội dung được điều hướng đến với một animation khác nhau tùy thuộc vào cách nó được điều hướng tới (vuốt trái, vuốt phải, hoặc về trang chủ). Một chuỗi chỉ ra animation nào cần dùng có thể được truyền vào dưới dạnginfo. historyOptional-
Một giá trị liệt kê đặt hành vi lịch sử của điều hướng này. Các giá trị có sẵn là:
auto: Giá trị mặc định; thường thực hiện điều hướngpushnhưng sẽ thực hiện điều hướngreplacetrong một số trường hợp đặc biệt (xem mô tảNotSupportedErrorbên dưới).push: Sẽ đẩy mộtNavigationHistoryEntrymới vào danh sách mục, hoặc thất bại trong một số trường hợp đặc biệt (xem mô tảNotSupportedErrorbên dưới).replace: Sẽ thay thếNavigationHistoryEntryhiện tại.
Giá trị trả về
Một đối tượng với các thuộc tính sau:
committed-
Một
Promisesẽ được thực hiện khi URL hiển thị đã thay đổi và mộtNavigationHistoryEntrymới đã được tạo. finished-
Một
Promisesẽ được thực hiện khi tất cả các promise được trả về bởi trình xử lýintercept()đều được thực hiện. Điều này tương đương với promiseNavigationTransition.finishedđược thực hiện, khi sự kiệnnavigatesuccesskích hoạt.
Một trong hai promise này sẽ bị từ chối nếu việc điều hướng thất bại vì lý do nào đó.
Ngoại lệ
DataCloneErrorDOMException-
Được ném ra nếu tham số
statechứa các giá trị không thể sao chép có cấu trúc. InvalidStateErrorDOMException-
Được ném ra nếu tài liệu hiện không hoạt động.
SyntaxErrorDOMException-
Được ném ra nếu tham số
urlkhông phải là URL hợp lệ. NotSupportedErrorDOMException-
Được ném ra nếu:
- Tùy chọn
historyđược đặt thànhpush, và trình duyệt hiện đang hiển thị tài liệuabout:blankban đầu. - Lược đồ của
urllàjavascript.
- Tùy chọn
Ví dụ
>Thiết lập nút trang chủ
function initHomeBtn() {
// Get the key of the first loaded entry
// so the user can always go back to this view.
const { key } = navigation.currentEntry;
backToHomeButton.onclick = () => {
navigation.traverseTo(key);
};
}
// Intercept navigate events, such as link clicks, and
// replace them with single-page navigations
navigation.addEventListener("navigate", (event) => {
event.intercept({
async handler() {
// Navigate to a different view,
// but the "home" button will always work.
},
});
});
Nút quay lại thông minh
Nút "quay lại" do trang cung cấp có thể đưa bạn trở lại, kể cả sau khi tải lại, bằng cách kiểm tra các mục lịch sử trước đó:
backButtonEl.addEventListener("click", () => {
if (
navigation.entries()[navigation.currentEntry.index - 1]?.url ===
"/product-listing"
) {
navigation.back();
} else {
// If the user arrived here in some other way
// e.g. by typing the URL directly:
navigation.navigate("/product-listing", { history: "replace" });
}
});
Sử dụng info và state
async function navigateHandler() {
await navigation.navigate(url, {
info: { animation: "swipe-right" },
state: { infoPaneOpen: true },
}).finished;
// Update application state
// …
}
Thông số kỹ thuật
| Specification |
|---|
| HTML> # dom-navigation-navigate-dev> |