NavigateEvent:signal 属性

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

NavigateEvent 接口的 signal 只读属性返回一个 AbortSignal,如果导航被取消(例如,用户按下浏览器的“停止”按钮,或者另一个导航启动并因此取消正在进行的导航),该信号将被中止。

AbortSignal 对象。

示例

这里的总体思路是,可以将 signal 属性传递给相关的 fetch() 操作,这样,如果取消导航,则可以安全地中止 fetch() 操作,避免在不再需要的 fetch 请求上浪费带宽。

js
navigation.addEventListener("navigate", (event) => {
  event.intercept({
    async handler() {
      // ...

      await fetch(`/img/some-image.jpg`, { signal: event.signal });

      // ...
    },
  });
});

备注: 请参阅示例:下一个/上一个按钮获取更详细的示例。

规范

Specification
HTML
# dom-navigateevent-signal-dev

浏览器兼容性

BCD tables only load in the browser

参见