90%前端没摸过的10个JS神API?复制即用

5045次阅读 462人点赞 作者: WuBin 发布时间: 2025-08-19 09:20:40
扫码到手机查看

浏览器自带API

 Page Visibility API —— 页面“隐身”探测

支持率:97%(Chrome 13+、Edge 12+)

场景:用户切标签页时暂停视频、停止轮询

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

 Web Share API —— 一键唤起系统分享

支持率:92%(需 HTTPS)

场景:把当前文章内容分享到微信、微博

if (navigator.share) {
  navigator.share({
    title: '我的新文章',
    text: '快来看看',
    url: location.href,
  });
}

Broadcast Channel —— 跨标签页通信

支持率:94%(Chrome 54+)

场景:A 标签页登录,B 标签页自动刷新

const bc = new BroadcastChannel('login');
bc.postMessage({ token: 'abc123' });
bc.onmessage = (e) => console.log(e.data);

Intl.NumberFormat —— 一键千分位

支持率:100%

场景:价格、股票、报表格式化

new Intl.NumberFormat('zh-CN').format(1234567); // 1,234,567

IntersectionObserver —— 懒加载 + 曝光埋点

支持率:97%(Chrome 51+)

场景:图片懒加载、广告曝光统计

const io = new IntersectionObserver((entries) => {
  entries.forEach((e) => e.isIntersecting && loadImg(e.target));
});
io.observe(img);

ResizeObserver —— 元素级尺寸监听

支持率:94%(Chrome 64+)

场景:响应式图表、虚拟滚动

const ro = new ResizeObserver((entries) => {
  entries.forEach((e) => console.log('尺寸变化', e.contentRect));
});
ro.observe(chartContainer);

Clipboard API —— 无依赖复制

支持率:95%(需 HTTPS)

场景:一键复制邀请码、优惠券码

await navigator.clipboard.writeText('COUPON2025');

URLSearchParams —— 再也不用正则解析 query

支持率:100%

场景:路由、埋点、搜索参数

const params = new URLSearchParams(location.search);
params.get('id'); // ?id=123

AbortController —— 可取消的 fetch

支持率:100%

场景:取消过期请求、防抖动

const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort(); // 立即中断

requestIdleCallback —— 主线程垃圾时间调度器

支持率:95%(Chrome 47+、Edge 79+)

场景:埋点、预加载、长计算零阻塞

requestIdleCallback(() => {
  // 在主线程空闲时执行
});

一键速查表

API一句话记忆
Page Visibility页面隐藏时暂停
Web Share一键系统分享
Broadcast Channel跨标签页通信
Intl.NumberFormat千分位/货币格式化
IntersectionObserver懒加载+曝光
ResizeObserver元素尺寸监听
Clipboard无依赖复制
URLSearchParams解析 query 神器
AbortController可取消 fetch
requestIdleCallback垃圾时间任务

相关资料

点赞 支持一下 觉得不错?客官您就稍微鼓励一下吧!
关键词:JS,原生API
推荐阅读
  • python基础-操作列表和迭代器

    python基础笔记-操作列表和迭代器的相关方法

    6537次阅读 152人点赞 发布时间: 2024-06-13 13:26:27 立即查看
  • uniapp实现被浏览器唤起的功能

    当用户打开h5链接时候,点击打开app若用户在已经安装过app的情况下直接打开app,若未安装过跳到应用市场下载安装这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。

    11566次阅读 780人点赞 发布时间: 2022-12-14 16:34:53 立即查看
  • PHP

    【正则】一些常用的正则表达式总结

    在日常开发中,正则表达式是非常有用的,正则表达式在每个语言中都是可以使用的,他就跟JSON一样,是通用的。了解一些常用的正则表达式,能大大提高你的工作效率。

    15079次阅读 619人点赞 发布时间: 2021-10-09 15:58:58 立即查看
  • 【中文】免费可商用字体下载与考证

    65款免费、可商用、无任何限制中文字体打包下载,这些字体都是经过长期验证,经得住市场考验的,让您规避被无良厂商起诉的风险。

    15057次阅读 1199人点赞 发布时间: 2021-07-05 15:28:45 立即查看
  • Vue

    Vue3开发一个v-loading的自定义指令

    在vue3中实现一个自定义的指令,有助于我们简化开发,简化复用,通过一个指令的调用即可实现一些可高度复用的交互。

    18213次阅读 1463人点赞 发布时间: 2021-07-02 15:58:35 立即查看
  • JS

    关于手机上滚动穿透问题的解决

    当页面出现浮层的时候,滑动浮层的内容,正常情况下预期应该是浮层下边的内容不会滚动;然而事实并非如此。在PC上使用css即可解决,但是在手机端,情况就变的比较复杂,就需要禁止触摸事件才可以。

    16420次阅读 1323人点赞 发布时间: 2021-05-31 09:25:50 立即查看
  • Vue

    Vue+html2canvas截图空白的问题

    在使用vue做信网单页专题时,有海报生成的功能,这里推荐2个插件:一个是html2canvas,构造好DOM然后转canvas进行截图;另外使用vue-canvas-poster(这个截止到2021年3月...

    32026次阅读 2518人点赞 发布时间: 2021-03-02 09:04:51 立即查看
  • Vue

    vue-router4过度动画无效解决方案

    在初次使用vue3+vue-router4时候,先后遇到了过度动画transition进入和退出分别无效的情况,搜遍百度没没找到合适解决方法,包括vue-route4有一些API都进行了变化,以前的一些操...

    28067次阅读 2169人点赞 发布时间: 2021-02-23 13:37:20 立即查看
交流 收藏 目录