NavigateEvent:canIntercept 属性
canIntercept
是 NavigateEvent
接口的一个只读属性,如果导航可以被拦截并重写其 URL,则返回 true
,否则返回 false
。
关于何时可以拦截导航有一些规则。例如:
- 你无法拦截跨源导航。
- 如果新 URL 的
path
、query
和fragment
部分与当前 URL 不同,则可以拦截http
或https
URL。 - 如果新 URL 的
query
和fragment
部分不同,则可以拦截file
URL。 - 对于其他 URL 类型,如果只有
fragment
部分不同,则可以拦截导航。
有关 文档何时可以重写其 URL 的更多说明(包括示例表格),请参阅规范。
值
布尔值——如果导航可以被拦截,则为 true
,否则为 false
。
示例
js
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 |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 现代客户端路由:导航 API
- 导航 API 说明
- Domenic Denicola 的 导航 API 实时演示