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

瀏覽器相容性

另見