NavigateEvent: свойство canIntercept
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров.
Чтение только свойство canIntercept интерфейса NavigateEvent возвращает true, если навигацию можно перехватить и изменить её URL, или false, в противном случае.
Существует несколько правил, определяющих, когда навигацию можно перехватить. Например:
- Вы не можете перехватывать навигацию между разными доменными именами.
- Вы можете перехватывать
httpилиhttpsURL, если толькоpath,query, иfragmentчасти нового URL отличаются от текущего URL. - Вы можете перехватывать
fileURL, если толькоqueryиfragmentчасти нового URL отличаются. - Для других типов URL вы можете перехватить навигацию, если отличается только
fragmentчасть.
Подробное объяснение, когда документ может изменить свой URL, включая таблицу примеров, см. в спецификации.
Значение
Булево значение—true , если навигацию можно перехватить, false , если нет.
Примеры
navigation.addEventListener("navigate", (event) => {
// Some navigations, e.g. cross-origin navigations, we
// cannot intercept. Let the browser handle those normally.
if (!event.canIntercept) {
return;
}
// Don't intercept fragment navigations or downloads.
if (event.hashChange || event.downloadRequest !== null) {
return;
}
event.intercept({
handler() {
if (event.formData) {
processFormDataAndUpdateUI(event.formData, event.signal);
} else {
doSinglePageAppNav(event.destination, event.signal);
}
},
});
});
Спецификации
| Спецификация |
|---|
| HTML # dom-navigateevent-canintercept-dev |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
canIntercept |
105102 | 105102 | Нет | 9188 | Нет | 105102 | Нет | 7270 | Нет | 20.019.0 | 105102 |
См. также
- Современное маршрутизирование на стороне клиента: API навигации
- Пояснения к API навигации
- Живая демонстрация API навигации от Domenic Denicola здесь
© 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/NavigateEvent/canIntercept