Документ: событие prerenderingchange
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех распространённых браузерах.
Экспериментально: Это экспериментальная технология
Перед использованием в продакшне внимательно ознакомьтесь с таблицей совместимости браузеров.
Событие prerenderingchange срабатывает на пререндеренном документе при его активации (т.е. когда пользователь просматривает страницу).
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("prerenderingchange", (event) => {});
prerenderingchange = (event) => {};
Тип события
Общее Event.
Примеры
Предотвращение выполнения кода во время пререндеринга
Пример демонстрирует, как отложить выполнение кода, который в противном случае запускался бы во время пререндеринга, до активации страницы. Это полезно для отложенного запуска аналитического кода, который актуален только при фактическом просмотре страницы.
Код проверяет, выполняется ли пререндеринг с помощью Document.prerendering, и если да, добавляет обработчик события для запуска функции инициализации аналитики после активации страницы. На странице, которая не пререндерилась, код аналитики запускается немедленно.
if (document.prerendering) {
document.addEventListener("prerenderingchange", initAnalytics, {
once: true,
});
} else {
initAnalytics();
}
Обратите внимание, что такой код не следует использовать для измерения частоты активации пререндеринга, потому что код может запуститься после того, как уже активировалась пререндеренная страница.
Примечание: См. страницу API правил спекуляций и, в частности, раздел Условия небезопасной спекулятивной загрузки для получения дополнительной информации о видах действий, которые вы можете отложить до завершения пререндеринга.
Измерение активаций пререндеринга
Этот код показывает, как измерить частоту активации пререндеринга. Он использует prerenderingchange для отслеживания событий активации и Performance.getEntriesByType() для отслеживания активаций навигации.
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");
}
Спецификации
| Спецификация |
|---|
| Пререндеринг (переработанный) # eventdef-document-prerenderingchange |
| Пререндеринг (переработанный) # dom-document-onprerenderingchange |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | |
prerenderingchange_event |
108 | 108 | Нет | 94 | Нет | 108 | Нет | 73 | Нет | 21.0 | 108 |
См. также
- API правил спекуляций
-
prerenderingсвойство -
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/prerenderingchange_event