当前位置: 首页 > news >正文

前端 10 个 JS 神 API,开箱即用

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

image

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

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

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

image

注意:需 HTTPS

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

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

3 Broadcast Channel —— 跨标签页通信

image

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

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

4 Intl.NumberFormat —— 一键千分位

image

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

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

5 IntersectionObserver —— 懒加载 + 曝光埋点

image

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

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

6 ResizeObserver —— 元素级尺寸监听

image

 

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

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

7 Clipboard API —— 无依赖复制

image

注意: 需 HTTPS

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

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

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

image

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

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

9 AbortController —— 可取消的 fetch

image

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

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

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

image

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

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

一键速查表(面试背)

API一句话记忆
Page Visibility 页面隐藏时暂停
Web Share 一键系统分享
Broadcast Channel 跨标签页通信
Intl.NumberFormat 千分位/货币格式化
IntersectionObserver 懒加载+曝光
ResizeObserver 元素尺寸监听
Clipboard 无依赖复制
URLSearchParams 解析 query 神器
AbortController 可取消 fetch
requestIdleCallback 垃圾时间任务
作者:前后端小能手
原文链接:https://zhuanlan.zhihu.com/p/1939393153007346495
http://www.zskr.cn/news/9550.html

相关文章:

  • 故障处理:清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业
  • Web自动化测试智能体详解
  • Playwright自动化测试框架与AI智能体应用
  • Python __init__.py文件
  • 20250330_信安一把梭_考试篇
  • VS Code配置Conda环境完整指南
  • 三度蝉联Gartner SASE领导者:唯一厂商的技术实力解析
  • 水水水 || CSP-S 2025 初赛
  • HCM 性能优化函数
  • Nginx配置里alias和root的区别
  • 国产DevOps生态崛起:Gitee如何赋能企业数字化转型
  • 【OpenCV】10 图像滤波
  • 50系GPU上安装MMCV
  • 20250308_信安一把梭_web
  • 萤石设备视频接入平台EasyCVR国标GB28181视频平台整合铁路抑尘喷洒智能视频监控方案
  • 从零到Offer:Java Socket面试通关秘籍-Socket面试为何总让人“心跳加速”? - 实践
  • 详细介绍:Linux驱动开发笔记(七)——并发与竞争(下)——自旋锁信号量互斥体
  • 2025年项目管理软件革命:AI与空间计算如何重塑企业协作范式
  • C语言 第三讲:分支和循环(上) - 教程
  • Vue3 新趋势:弃用 ECharts!最强图表库诞生!
  • 群晖安装套件跳过版本检查
  • 微信个人号开发API/文档/教程
  • 个人微信号二次开发API调用、微信API接口
  • 建筑行业能源管理破局:MyEMS 打造商业楼宇 “能耗可视化 + 智能调控” 方案
  • 科研必读|提升酿酒酵母表达蛋白产量的关键技术
  • 【RK3576】【Android14】如何在Android14下单独编译kernel-6.1? - 详解
  • 完整教程:栈与队列的实现方式与应用解惑
  • 9.8C++作业 - 实践
  • 如何用 Dify 无代码工作流实现 AI 自动化抓取与分析 LinkedIn 招聘数据
  • 2025/9/22