Navigationï¼traverseTo() æ¹æ³
åºçº¿ 2026 >
æè¿å¯ç¨
èª 2026å¹´1æ èµ·ï¼æ¤ç¹æ§å·²å¨ææ°æµè§å¨ä¸å¾å°æ¯æãä½å¨è¾æ§çè®¾å¤ææµè§å¨ä¸å¯è½æ æ³è¿è¡ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
Navigation æ¥å£ç traverseTo() æ¹æ³å¯¼èªå°ç±ç»å®ç key æ è¯ç NavigationHistoryEntryã
è¯æ³
traverseTo(key)
traverseTo(key, options)
åæ°
key-
è¦å¯¼èªå°ç
NavigationHistoryEntryçkeyã optionså¯é-
å å«ä»¥ä¸å±æ§çé项对象ï¼
infoå¯é-
å¼åè å®ä¹çä¿¡æ¯ï¼å°ä¼ éç»
navigateäºä»¶ï¼å¯å¨NavigateEvent.infoä¸è·åãè¿å¯ä»¥æ¯ä»»ä½æ°æ®ç±»åãä¾å¦ï¼ä½ å¯è½å¸ææ ¹æ®å¯¼èªæ¹å¼ï¼åå·¦æ»å¨ãå峿»å¨æè¿å主页ï¼ä»¥ä¸åçå¨ç»æ¾ç¤ºæ°å¯¼èªçå 容ãå¯ä»¥ä¼ å ¥ä¸ä¸ªåç¬¦ä¸²æ¥æç¤ºè¦ä½¿ç¨åªç§å¨ç»ï¼è¯¥å符串å¯ä½ä¸ºinfoéé¡¹ä¼ å ¥ã
è¿åå¼
å å«ä»¥ä¸å±æ§ç对象ï¼
committed-
å½å¯è§ URL åçæ¹å并䏿°ç
NavigationHistoryEntry被å建æ¶è¢«å ç°çPromiseã finished-
å½
intercept()å¤çå¨è¿åçææ promise é½è¢«å ç°æ¶è¢«å ç°çPromiseãè¿ç¸å½äºå½navigatesuccessäºä»¶è§¦åæ¶ï¼å ç°NavigationTransition.finishedpromiseã
妿坼èªç±äºæç§åå 失败ï¼åè¿ä¸¤ä¸ª promise ä¸çæä¸ä¸ªä¼è¢«æç»ã
å¼å¸¸
InvalidStateErrorDOMException-
妿
Navigation.currentEntryçNavigationHistoryEntry.indexå¼ä¸º -1ï¼è¿æå³çå½åDocumentå°æªæ¿æ´»ï¼æè 导èªåå²è®°å½å表ä¸å å«å ·ææå®é®çNavigationHistoryEntryï¼æè å½åDocumentæ£å¨å¸è½½ï¼åæåºæ¤å¼å¸¸ã
示ä¾
>设置主页æé®
function initHomeBtn() {
// è·å第ä¸ä¸ªå è½½æ¡ç®çé®ï¼ä»¥ä¾¿ç¨æ·å¯ä»¥éæ¶è¿å该è§å¾ã
const { key } = navigation.currentEntry;
backToHomeButton.onclick = () => {
navigation.traverseTo(key);
};
}
// æ¦æªå¯¼èªäºä»¶ï¼ä¾å¦é¾æ¥ç¹å»ï¼ï¼å¹¶å°å
¶æ¿æ¢ä¸ºå页导èª
navigation.addEventListener("navigate", (event) => {
event.intercept({
async handler() {
// 导èªå°ä¸åçè§å¾ï¼ä½â主页âæé®å§ç»ææã
},
});
});
è§è
| è§è |
|---|
| HTML > # dom-navigation-traverseto-dev > |
æµè§å¨å ¼å®¹æ§
åè§
- ç°ä»£å®¢æ·ç«¯è·¯ç±ï¼å¯¼èª API
- å¯¼èª API 说æ
- Domenic Denicola çå¯¼èª API å¨çº¿æ¼ç¤º