全部
常见问题
产品动态
精选推荐

90% 前端都不知道的 20 个「零依赖」浏览器原生能力!

管理 管理 编辑 删除

分享 202025 年依旧「少人知道、却能立竿见影」的原生 API

收藏 = 省下一个工具库 + 少写 100 行代码!

1. ResizeObserver

精准监听任意 DOM 宽高变化,图表自适应、虚拟滚动必备。

new ResizeObserver(([e]) => chart.resize(e.contentRect.width))  .observe(chartDom);

2. IntersectionObserver

检测元素进出视口,一次搞定懒加载 + 曝光埋点,性能零损耗。

new IntersectionObserver(entrieList =>  entrieList.forEach(e => e.isIntersecting && loadImg(e.target))).observe(img);

3. Page Visibility

侦测标签页隐藏,自动暂停视频、停止轮询,移动端省电神器。

document.addEventListener('visibilitychange', () =>  document.hidden ? video.pause() : video.play());

4. Web Share

一键唤起系统分享面板,直达微信、微博、Telegram,需 HTTPS

navigator.share?.({ title: '好文', url: location.href });

5. Wake Lock

锁定屏幕常亮,直播、PPT、阅读器不再自动息屏。

await navigator.wakeLock.request('screen');

6. Broadcast Channel

同域标签实时广播消息,登录态秒同步,告别 localStorage 轮询。

const bc = new BroadcastChannel('auth');bc.onmessage = () => location.reload();

7. PerformanceObserver

无侵入采集 FCPLCPFID,一行代码完成前端性能监控。

new PerformanceObserver(list =>  list.getEntries().forEach(sendMetric)).observe({ type: 'largest-contentful-paint', buffered: true });

8. requestIdleCallback

埋点日志丢进浏览器空闲时间,首帧零阻塞。

requestIdleCallback(() => sendBeacon('/log', data));

9. scheduler.postTask

原生优先级任务队列,低优任务后台跑,主线程丝滑。

scheduler.postTask(() => sendBeacon('/log', data), { priority: 'background' });

10. AbortController

随时取消 fetch,路由切换不再旧请求竞态,兼容 100%

const ac = new AbortController();fetch(url, { signal: ac.signal });ac.abort();

11. ReadableStream

分段读取响应流,边下载边渲染,大文件内存零爆涨。

const reader = response.body.getReader();while (true) {  const { done, value } = await reader.read();  if (done) break;  appendChunk(value);}

12. WritableStream

逐块写入磁盘或网络,实时保存草稿、上传大文件更稳。

const writer = stream.writable.getWriter();await writer.write(chunk);

13. Background Fetch

PWA 后台静默下载,断网恢复继续,课程视频提前缓存。

await registration.backgroundFetch.fetch('video', ['/course.mp4']);

14. File System Access

读写本地真实文件,需用户授权,Web IDE 即开即用。

const [fh] = await showOpenFilePicker();editor.value = await (await fh.getFile()).text();

15. Clipboard

异步读写剪贴板,无需第三方库,HTTPS 环境安全复制。

await navigator.clipboard.writeText('邀请码 9527');

16. URLSearchParams

解析、修改、构造 URL 查询串,告别手写正则。

const p = new URLSearchParams(location.search);p.set('page', 2);history.replaceState({}, '', `?${p}`);

17. structuredClone

深拷贝对象、数组、Map、Date,循环引用也能完美复制。

const copy = structuredClone(state);

18. Intl.NumberFormat

千分位货币百分比一次格式化,国际化零配置。

new Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' })  .format(1234567); // ¥1,234,567.00

19. EyeDropper

浏览器级吸管工具,像素级取色,设计系统直接调用。

const { sRGBHex } = await new EyeDropper().open();

20. WebCodecs

原生硬解码音视频,4K 60 帧流畅播放,CPU 占用直降。

const decoder = new VideoDecoder({  output: frame => ctx.drawImage(frame, 0, 0),  error: console.error});decoder.configure({ codec: 'vp09.00.10.08' });


请登录后查看

聆听 最后编辑于2025-09-03 12:43:11

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
32
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服