Skip to main content
播放器包提供了一个 <hyperframes-player> 自定义元素,该元素将 HyperFrames 组合嵌入到任何位置(任何框架或纯 HTML 中)。零依赖性,3KB gzip 压缩。

何时使用

当您需要时使用 @hyperframes/player
  • 将渲染的合成嵌入网站、仪表板或应用程序中
  • 将类似视频的播放器添加到着陆页或产品演示中
  • 显示文档或博客文章中的成分
如果您愿意,请使用不同的包:
  • 交互式编辑作品 — 使用 studio
  • 开发期间预览 - 使用 CLI (npx hyperframes preview)
  • 渲染为 MP4 — 使用 CLI生产者

快速入门

通过CDN

如果您需要经典的 <script> 标签而不是 ESM,请使用显式全局构建:

通过npm

HTML 属性

JavaScript API

播放器镜像原生 <video> 元素 API:

活动

框架示例

反应

维埃

程序化

高级:iframe 访问

该组合在玩家 Shadow DOM 的沙盒 <iframe> 内运行。对于大多数用例,您不需要直接访问 - JavaScript API 和上面的事件就足够了。但是,如果您要在播放器之上构建编辑器、记录器或自定义时间线,则需要检查合成的 DOM 或读取其 __player / __timelines 运行时对象。 iframeElement getter 为这些消费者公开内部 iframe:
这是将玩家桥接到 @hyperframes/studio 等编辑器工具的规范方法。工作室导出一个 resolveIframe 帮助器,用于处理直接 iframe 引用和 Web 组件引用:

React:声明性引用模式

如果您更喜欢 JSX 而不是命令式元素创建,请将引用附加到 Web 组件并解析效果内的 iframe:
常见问题 — 如果将 <hyperframes-player> 元素本身(不是 iframeElement)传递到需要 <iframe> 的挂钩或 API 中,则每个 .contentWindow / .contentDocument 访问都会返回 null,因为 iframe 位于玩家的 Shadow DOM 内部。时间轴搜索、播放、暂停和 DOM 检查都是静默无操作的。 始终首先提取 iframeElement,或使用 @hyperframes/studio 中的 resolveIframe 来透明地处理 iframe 和 Web 组件主机。

建筑学

播放器在 Shadow DOM 容器内使用 iframe。这提供了:
  • 隔离 — 组合 CSS/JS 不会泄漏到您的页面或与您的页面发生冲突
  • 安全性 — iframe 沙箱限制组合功能
  • 缩放 — 通过 CSS 转换自动缩放合成以适合玩家的容器
播放器通过 HyperFrames 运行时桥接协议 (postMessage) 与合成进行通信。现有的组合物无需修改即可工作。

控制

当存在 controls 属性时,底部会出现最小覆盖层:
  • 播放/暂停按钮(左)
  • 滑动条 支持拖动(鼠标+触摸)
  • 时间显示 显示当前/总持续时间(右)
  • 3 秒不活动后自动隐藏,悬停时重新显示