可通过localStorage保存并恢复视频播放器的默认分辨率设置:监听用户选择后存入字符串值,初始化时读取并应用,需配合播放器清晰度切换能力,同时提供重置功能及异常兜底。
可以通过 localStorage 保存用户在网页端视频播放器中手动选择的默认分辨率(如 720p、1080p、自动),并在下次加载时读取并应用该设置。关键在于监听用户操作、安全存取、合理回退,并与播放器逻辑联动。
当用户通过下拉菜单、按钮或设置面板切换分辨率时,将选中的值写入 localStorage:
// 假设有一个 <select id="resolution-select">const select = document.getElementById('resolution-select');select.addEventListener('change', () => { const value = select.value; // 如 '720p'、'1080p'、'auto' localStorage.setItem('videoDefaultResolution', value);});
注意:确保值为字符串且合法;避免直接存对象,如需结构化数据可使用 JSON.stringify(),但此处单值字符串更轻量安全。
在视频播放器初始化前(例如 player.load() 或 source 设置前),从 localStorage 读取并优先使用该值:
立即学习“前端免费学习笔记(深入)”;
function getDefaultResolution() { return localStorage.getItem('videoDefaultResolution') || 'auto';}// 应用于播放器(以 Video.js 为例)const player = videojs('my-video', { html5: { hls: { overrideNative: true } }});player.ready(() => { const savedRes = getDefaultResolution(); if (savedRes !== 'auto') { // 尝试匹配并切换到对应层级(需播放器支持) const tech = player.tech_(); if (tech && tech.setPlaybackRate) { // 实际适配需结合自定义 rendition 切换逻辑(见下一点) applyResolutionToPlayer(player, savedRes); } }});
localStorage 只负责记忆,真正生效依赖播放器是否支持运行时分辨率切换(如 HLS 的 levels 或 DASH 的 representations)。常见处理方式:
loadedmetadata 或 levelchange 后检查当前 level 是否匹配保存值,不匹配则调用 setCurrentLevel()
src 加载前拼接带分辨率标识的流地址(如 stream_1080p.m3u8),再存入 localStorage用户可能想恢复默认,应提供“恢复默认”按钮,并清除对应 key:
document.getElementById('reset-resolution').addEventListener('click', () => { localStorage.removeItem('videoDefaultResolution'); // 同时重置 UI 选中状态 document.getElementById('resolution-select').value = 'auto';});
兼容性方面:localStorage 在所有现代浏览器中可用,但需注意:
QuotaExceededError 异常)