Spec-Zone.ru › Web APIs

PageSwapEvent

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Объект события PageSwapEvent доступен внутри обработчиков событий pageswap.

Событие pageswap срабатывает при переходе между документами, когда предыдущий документ собирается загрузиться. Во время перехода между документами объект события PageSwapEvent позволяет управлять связанным переходом вида (переход вида) (предоставляя доступ к соответствующему объекту ViewTransition) из документа, из которого происходит переход, если переход вида был инициирован переходом. Он также предоставляет доступ к информации о типе перехода и текущем и целевом документах.

Конструктор

PageSwapEvent()

Создаёт новый экземпляр объекта PageSwapEvent.

Свойства экземпляра

activation Только для чтения

Содержит объект NavigationActivation, содержащий тип перехода и записи текущей и целевой истории документов для перехода в рамках одного источника. Если в цепочке перенаправлений есть URL с другим источником, возвращает null.

viewTransition Только для чтения

Содержит объект ViewTransition, представляющий активный переход вида для перехода между документами.

Примеры

window.addEventListener("pageswap", async (e) => {
  // Only run this if an active view transition exists
  if (e.viewTransition) {
    const currentUrl = e.activation.from?.url
      ? new URL(e.activation.from.url)
      : null;
    const targetUrl = new URL(e.activation.entry.url);

    // Going from profile page to homepage
    // ~> The big img and title are the ones!
    if (isProfilePage(currentUrl) && isHomePage(targetUrl)) {
      // 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 view-transition-names after snapshots have been taken
      // Stops naming conflicts resulting from the page state persisting in BFCache
      await e.viewTransition.finished;
      document.querySelector(`#detail main h1`).style.viewTransitionName =
        "none";
      document.querySelector(`#detail main img`).style.viewTransitionName =
        "none";
    }

    // Going to profile page
    // ~> The clicked items are the ones!
    if (isProfilePage(targetUrl)) {
      const profile = extractProfileNameFromUrl(targetUrl);

      // 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 view-transition-names after snapshots have been taken
      // Stops naming conflicts resulting from the page state persisting in BFCache
      await e.viewTransition.finished;
      document.querySelector(`#${profile} span`).style.viewTransitionName =
        "none";
      document.querySelector(`#${profile} img`).style.viewTransitionName =
        "none";
    }
  }
});

Примечание: См. Список сотрудников команды Chrome DevRel для демонстрации в реальном времени, из которой взят этот код.

Спецификации

Спецификация
HTML
# the-pageswapevent-interface

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
PageSwapEvent 128 128 Нет 114 18.2 128 Нет 85 18.2 Нет 128
PageSwapEvent 124 124 Нет 110 18.2 124 Нет 82 18.2 27.0 124
activation 124 124 Нет 110 18.2 124 Нет 82 18.2 27.0 124
viewTransition 126 126 Нет 112 18.2 126 Нет 83 18.2 Нет 126

См. также

  • API переходов вида

© 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/PageSwapEvent

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API