可直接用 localstorage.setitem() 保存均衡器各频段增益值,推荐以对象形式(如 {'31': 0, '62': 2, ...})存储并 json 序列化,加载时用 getitem() 读取、解析后应用,需加 try/catch 防解析失败,同时检测 storage 可用性并设降级方案。

可以直接用 localStorage.setItem() 保存均衡器各频段增益值(如数组或对象),加载时用 localStorage.getItem() 读取并应用——关键在于数据结构设计合理、注意类型转换、并在用户调整后及时持久化。
1. 定义并保存均衡器预设数据结构
均衡器通常有多个频段(如 31Hz、62Hz、125Hz … 16kHz),每个频段对应一个增益值(单位:dB,常见范围 -12 到 +12)。推荐用对象形式保存,键为频点,值为增益:
const eqPreset = {
'31': 0,
'62': 2,
'125': 1,
'250': 0,
'500': -1,
'1k': 0,
'2k': 1,
'4k': 3,
'8k': 2,
'16k': 0
};
localStorage.setItem('audioEqPreset', JSON.stringify(eqPreset));
避免直接存数组(易错位),也别存 DOM 元素或函数——localStorage 只支持字符串。
2. 页面加载时自动恢复预设
在音频播放器初始化完成后(例如 DOMContentLoaded 或播放器 ready 后),读取并应用:
function loadEqPreset() {
const saved = localStorage.getItem('audioEqPreset');
if (saved) {
try {
const preset = JSON.parse(saved);
// 假设你有一个 applyEqSettings(preset) 方法
applyEqSettings(preset);
updateUiFromPreset(preset); // 同步滑块/显示
} catch (e) {
console.warn('均衡器预设解析失败,使用默认值');
resetToDefaultEq();
}
}
}
务必加 try/catch——JSON 解析失败很常见(比如手动编辑过 localStorage 或格式损坏)。
3. 用户调整时实时保存
监听每个频段滑块的 input 或 change 事件,收集当前值并写入:
- 用
debounce防抖(例如 300ms 内只存一次),避免频繁写入拖慢性能 - 每次保存前先深拷贝当前状态,再序列化,防止引用污染
- 可增加“保存为预设”按钮,让用户主动命名存档(此时需用不同 key,如
eq_preset_jazz)
4. 兼容性与降级处理
虽然现代浏览器均支持 localStorage,但仍建议检测可用性:
function isStorageAvailable() {
try {
const test = '__storage_test__';
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch (e) {
return false;
}
}
if (!isStorageAvailable()) {
console.warn('本地存储不可用,均衡器设置将不被记忆');
// 可回退到内存变量或 URL 参数(如 ?eq=0,2,1,...)
}
移动端 Safari 在无痕模式下会抛出异常;部分浏览器扩展也可能拦截 storage API——有兜底逻辑更健壮。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











