NavigationActivation
Ограниченная доступность
Эта функция не является Базовой, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная версия: Это экспериментальная технология.
Перед использованием в производственной среде внимательно проверьте таблицу совместимости браузеров.
Интерфейс NavigationActivation API навигации представляет собой недавнюю междокументную навигацию. Он содержит тип навигации и записи истории исходящих и входящих документов.
Доступ к этому объекту осуществляется через свойства PageSwapEvent.activation и Navigation.activation. Обратите внимание, что в каждом случае NavigationActivation представляет собой другую навигацию:
-
Navigation.activationпредставляет информацию о навигации на текущую страницу. -
PageSwapEvent.activationпредставляет информацию о навигации на следующую страницу.
Свойства экземпляра
-
entryТолько для чтения Экспериментально -
Содержит объект
NavigationHistoryEntry, представляющий запись истории для входящего ("к") документа в навигации. Это эквивалентно свойствуNavigation.currentEntryв момент активации входящего документа. -
fromТолько для чтения Экспериментально -
Содержит объект
NavigationHistoryEntry, представляющий запись истории для исходящего ("от") документа в навигации. -
Содержит строку, указывающую тип навигации.
Примеры
window.addEventListener("pagereveal", async (e) => {
// If the "from" history entry does not exist, return
if (!navigation.activation.from) return;
// Only run this if an active view transition exists
if (e.viewTransition) {
const fromUrl = new URL(navigation.activation.from.url);
const currentUrl = new URL(navigation.activation.entry.url);
// Went from profile page to homepage
// ~> Set VT names on the relevant list item
if (isProfilePage(fromUrl) && isHomePage(currentUrl)) {
const profile = extractProfileNameFromUrl(fromUrl);
// Set view-transition-name values on the elements to animate
document.querySelector(`#${profile} span`).style.viewTransitionName =
"name";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"avatar";
// Remove names after snapshots have been taken
// so that we're ready for the next navigation
await e.viewTransition.ready;
document.querySelector(`#${profile} span`).style.viewTransitionName =
"none";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"none";
}
// Went to profile page
// ~> Set VT names on the main title and image
if (isProfilePage(currentUrl)) {
// Set view-transition-name values on the elements to animate
document.querySelector(`#detail main h1`).style.viewTransitionName =
"name";
document.querySelector(`#detail main img`).style.viewTransitionName =
"avatar";
// Remove names after snapshots have been taken
// so that we're ready for the next navigation
await e.viewTransition.ready;
document.querySelector(`#detail main h1`).style.viewTransitionName =
"none";
document.querySelector(`#detail main img`).style.viewTransitionName =
"none";
}
}
});
Примечание: См. Список разработчиков Chrome DevRel для демонстрации в реальном времени, из которой взят этот код.
Спецификации
| Спецификация |
|---|
| HTML # navigationactivation |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
NavigationActivation |
123 | 123 | Нет | 109 | Нет | 123 | Нет | 82 | Нет | 27.0 | 123 |
entry |
123 | 123 | Нет | 109 | Нет | 123 | Нет | 82 | Нет | 27.0 | 123 |
from |
123 | 123 | Нет | 109 | Нет | 123 | Нет | 82 | Нет | 27.0 | 123 |
navigationType |
123 | 123 | Нет | 109 | Нет | 123 | Нет | 82 | Нет | 27.0 | 123 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/NavigationActivation