此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

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

关于何时可以拦截导航,有几条规则。例如:

  • 你不能拦截跨源导航。
  • 对于 httphttps URL,仅当新 URL 的 pathqueryfragment 部分与当前 URL 不同时可以拦截。
  • 对于 file URL,仅当新 URL 的 queryfragment 部分不同时可以拦截。
  • 对于其他 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

浏览器兼容性

参见