NavigateEvent:canIntercept 属性

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

canInterceptNavigateEvent 接口的一个只读属性,如果导航可以被拦截并重写其 URL,则返回 true,否则返回 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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅