HTML5视频需在loadedmetadata事件后设currentTime属性(单位秒)才能精准跳转,URL的#t=参数可静态指定起播时间但仅首次加载有效,preload应设为metadata,跨域视频须配置CORS头否则静默失败。
currentTime 属性控制起始播放时间HTML5 元素原生支持从指定时间点开始播放,核心是设置 currentTime 属性。这个属性单位为秒(浮点数),代表视频当前播放位置。它必须在视频元数据加载完成(loadedmetadata 事件触发后)才能安全设置,否则可能被忽略或抛错。
常见错误是直接在 onload 或 DOM 加载后立刻赋值,但此时视频尚未解析时长和关键帧信息,currentTime 设置无效。
loadedmetadata 事件回调中设置:const video = document.getElementById('myVideo');
video.addEventListener('loadedmetadata', () => {
video.currentTime = 65.5; // 从第 65.5 秒开始
});playBtn.addEventListener('click', () => {
video.currentTime
= 120;
video.play();
});#t=)HTML5 规范支持在视频 URL 后添加 #t= 片段标识符来声明起始时间,浏览器会在加载时自动跳转。语法支持两种格式:#t=65.5(仅开始时间)或 #t=65.5,120(开始+结束时间)。
这个方法无需 JS,适合静态页面或服务端直出场景,但有明显限制:
立即学习“前端免费学习笔记(深入)”;
src 后才重新解析preload 属性影响 currentTime 设置时机preload 决定了浏览器加载视频的积极程度,间接影响 currentTime 是否能及时生效。默认值 metadata 仅加载元数据(含时长、尺寸),已足够支持 currentTime 设置;而 none 可能导致 loadedmetadata 延迟甚至不触发。
preload 不为 none,尤其在需要精确起播的场景下:preload="auto" 会预加载更多数据,可能加快跳转响应,但增加带宽消耗,移动端慎用preload="metadata",仍需监听 loadedmetadata,不能假设 DOM ready 后就绪currentTime 设置失败的静默问题当视频资源位于不同源(CORS)且响应头未包含 Access-Control-Allow-Origin 时,浏览器出于安全限制,会禁止读取视频元数据(包括时长),导致 currentTime 设置无效,且通常不报错——只是静默失败。
验证方式:检查控制台是否出现类似 Unable to get video metadata: No 'Access-Control-Allow-Origin' header 的警告;或打印 video.duration,若为 NaN 即表示元数据不可用。
Access-Control-Allow-Origin: *(或具体域名)
if (isNaN(video.duration)) {
console.warn('Video metadata not available — currentTime may not work');
}loadedmetadata 的等待逻辑——没这两个,其他写法都可能白忙。
# html
# js
# 前端
# go
# html5
# 编码
# 浏览器
# access
# safari
# ai
# cdn
# 跨域
# 标识符
# auto
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11任务栏颜色怎么改_Win11自定义任务栏配色设置【美化】
Win11怎么快速锁屏_Win11一键锁屏快捷键Win+L【基础】
Mac上的iMovie如何剪辑视频?(新手入门教程)
C++友元类使用场景_C++类间协作设计方式讲解
如何使用Golang reflect检查方法数量_动态分析类型方法
C++中的std::shared_from_this有什么用?C++安全获取this的shared_ptr【智能指针】
Python类装饰器使用_元编程解析【教程】
c++如何连接Redis c++ hiredis库使用教程【指南】
php删除数据怎么软删除_添加is_del字段标记删除【技巧】
Win11如何设置计划任务 Win11定时执行程序教程【详解】
如何在Golang中处理数据库事务错误_回滚和日志记录
Win11怎么更改任务栏颜色_Windows11个性化重音色设置
Python 模块的 __name__ 属性如何由导入方式决定?
Python音视频处理高级项目教程_FFmpegPydub剪辑与特效
如何使用Golang实现函数指针_函数变量与回调示例
用lighttpd能运行php吗_lighttpd配置php步骤【教程】
使用类变量定义字符串常量时如何实现类型安全的 Literal 注解
Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】
如何在Golang中配置代码格式化工具_使用gofmt和goimports
Python数据挖掘核心算法实践_聚类分类与特征工程
Windows怎样关闭桌面弹窗广告_Windows关闭桌面弹窗设置【教程】
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
如何在Golang中操作嵌套切片指针_Golang多维slice修改
如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】
Laravel 查询 JSON 列:高效筛选包含数组中任意值的记录
如何使用Golang实现错误包装与传递_Golangfmt.Errorf%w使用实践
php修改数据怎么批量改状态_批量更新status字段值技巧【操作】
如何在Golang中处理JSON字段缺失_Golangjson解析字段校验方法
LINUX怎么设置系统语言_LINUX修改中文环境
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Mac怎么查看活动监视器_理解Mac进程和资源占用【指南】
如何在 ACF 中正确更新嵌套多层 Group 字段内的子字段
Windows怎样关闭开始菜单广告_Windows关闭开始菜单广告设置【步骤】
Windows系统时间服务错误_W32Time服务修复与同步教学
Win11怎么关闭边缘滑动手势_Windows11禁用触摸屏边缘操作
Windows 10怎么录屏_Windows 10使用Xbox Game Bar录制屏幕视频教程
Linux如何安装Tomcat应用服务器_Linux环境部署与端口修改【教程】
Win11怎么开启智能存储_Windows11存储感知自动清理文件
Django密码修改后会话失效的解决方案
短链接怎么用php还原_从基础原理到代码实现教学【详解】
C++如何获取CPU核心数?(std::thread::hardware_concurrency)
Win11声音忽大忽小怎么办 Win11音频增强功能关闭教程【修复】
Win11怎么开启游戏模式_Win11优化游戏帧数性能【教程】
Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】
网站体验不好=浪费钱:如何提升-用户体验效果差
php在Linux怎么部署_LNMP环境搭建PHP服务的详细指南【指南】
mac怎么右键_MAC鼠标右键设置与触控板手势技巧【入门】
MAC的“接续互通”功能无法使用怎么办_MAC检查蓝牙、Wi-Fi和相同Apple ID登录
Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】
2026-01-03
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。