Spec-Zone.ru › Web APIs

Документ: свойство prerendering

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

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

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

Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно изучите таблицу совместимости с браузерами.

Свойство prerendering только для чтения интерфейса Document возвращает true, если документ в данный момент находится в процессе предварительной отрисовки, инициированной через API правил упреждения.

Значение

Булево значение. Возвращает true, если документ находится в процессе предварительной отрисовки, и false, если нет. false будет возвращено для документов, которые завершили предварительную отрисовку, и документов, которые не подвергались предварительной отрисовке.

Примеры

Чтобы запустить действие во время предварительной отрисовки страницы, вы можете проверить свойство prerendering. Например, вы можете запустить некоторые аналитические данные:

if (document.prerendering) {
  analytics.sendInfo("got this far during prerendering!");
}

Когда предварительно отрисованный документ активируется, PerformanceNavigationTiming.activationStart устанавливается в значение DOMHighResTimeStamp, представляющее время между началом предварительной отрисовки и фактической активацией документа. Следующая функция может проверять предварительную отрисовку и предварительно отрисованные страницы:

function pagePrerendered() {
  return (
    document.prerendering ||
    performance.getEntriesByType("navigation")[0]?.activationStart > 0
  );
}

Когда пользователь активирует предварительно отрисованную страницу, событие prerenderingchange будет сгенерировано. Это можно использовать для активации действий, которые по умолчанию запускались при загрузке страницы, но которые вы хотите отложить до фактического просмотра страницы пользователем. Следующий код настраивает обработчик событий для выполнения функции после завершения предварительной отрисовки, для предварительно отрисованной страницы или выполнения ее сразу для неотрисованной страницы:

if (document.prerendering) {
  document.addEventListener("prerenderingchange", initAnalytics, {
    once: true,
  });
} else {
  initAnalytics();
}

Примечание: См. страницу документации API правил упреждения, а именно раздел Условия небезопасной упреждающей загрузки для получения дополнительной информации о видах действий, которые вы можете отложить.

Чтобы измерить частоту активации предварительной отрисовки, объедините все три API: document.prerendering для обнаружения случаев, когда страница в настоящее время находится в процессе предварительной отрисовки, prerenderingchange для отслеживания активаций в этом случае и activationStart для проверки случаев, когда страница была предварительно отрисована в прошлом.

if (document.prerendering) {
  document.addEventListener(
    "prerenderingchange",
    () => {
      console.log("Prerender activated after this script ran");
    },
    { once: true },
  );
} else if (performance.getEntriesByType("navigation")[0]?.activationStart > 0) {
  console.log("Prerender activated before this script ran");
} else {
  console.log("This page load was not via prerendering");
}

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

Спецификация
Переработанная предварительная отрисовка
# dom-document-prerendering

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
prerendering 108 108 Нет 94 Нет 108 Нет 73 Нет 21.0 108

См. также

  • API правил упреждения
  • prerenderingchange событие
  • PerformanceNavigationTiming.activationStart свойство

© 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/Document/prerendering

Spec-Zone.ru

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