NavigateEvent:canIntercept 属性
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
NavigateEvent
接口的 canIntercept
只读属性在可以拦截导航并重写其 URL 时返回 true
,否则返回 false
。
关于何时可以拦截导航,有几条规则。例如:
- 你不能拦截跨源导航。
- 对于
http
或https
URL,仅当新 URL 的path
、query
和fragment
部分与当前 URL 不同时可以拦截。 - 对于
file
URL,仅当新 URL 的query
和fragment
部分不同时可以拦截。 - 对于其他 URL 类型,仅当
fragment
部分不同时可以拦截导航。
请参阅规范以获取有关何时可以重写文档的 URL 的更多解释,其中包括示例表格。
值
布尔值——如果可以拦截导航则为 true
,否则为 false
。
示例
js
navigation.addEventListener("navigate", (event) => {
// 有些导航,例如跨源导航,我们无法拦截。让浏览器正常处理这些导航。
if (!event.canIntercept) {
return;
}
// 不要拦截片段导航或下载。
if (event.hashChange || event.downloadRequest !== null) {
return;
}
event.intercept({
handler() {
if (event.formData) {
processFormDataAndUpdateUI(event.formData, event.signal);
} else {
doSinglePageAppNav(event.destination, event.signal);
}
},
});
});
规范
Specification |
---|
HTML # dom-navigateevent-canintercept-dev |
浏览器兼容性
BCD tables only load in the browser
参见
- 现代客户端路由:导航 API
- 导航 API 说明
- Domenic Denicola 的导航 API 在线演示