NavigateEvent: canIntercept 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

NavigateEvent 接口的只读属性 canIntercept 返回 true,如果导航可以被拦截并重写其 URL,否则返回 false

关于导航何时可以被拦截有一些规则。例如:

  • 您不能拦截跨源导航。
  • 如果新 URL 的 pathqueryfragment 部分与当前 URL 不同,您可以拦截 httphttps URL。
  • 如果新 URL 的 queryfragment 部分不同,您可以拦截 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

浏览器兼容性

另见