NavigateEvent:hasUAVisualTransition 属性

可用性有限

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

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

NavigateEvent 接口的只读属性 hasUAVisualTransition 返回一个布尔值,如果用户代理在此事件分发之前为此导航执行了视觉过渡,则返回 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() {
      // Fetch the new content
      const newContent = await fetchNewContent(event.destination.url, {
        signal: event.signal,
      });

      // The UA does not support View Transitions, or the UA
      // already provided a Visual Transition by itself (e.g. swipe back).
      // In either case, update the DOM directly
      if (!document.startViewTransition || event.hasUAVisualTransition) {
        doSinglePageAppNav(newContent);
        return;
      }

      // Update the content using a View Transition
      document.startViewTransition(() => {
        doSinglePageAppNav(newContent);
      });
    },
  });
});

规范

规范
HTML
# dom-navigateevent-hasuavisualtransition

浏览器兼容性

另见