当前位置: 首页 > 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

案例:阿里云 codeup

场景: 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.hskmm.com/?act=detail&tid=13368

相关文章:

  • 故障处理:清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业
  • Web自动化测试智能体详解
  • Queue 配合Thread使用
  • MyEMS 进阶应用:从单厂能耗管理到集团跨区域能源数据协同分析
  • Playwright自动化测试框架与AI智能体应用
  • 以下内容在if判定的时候会被判定为 假
  • Python __init__.py文件
  • 20250330_信安一把梭_考试篇
  • VS Code配置Conda环境完整指南
  • 不同Windows系统中支持的最新.Net Framework/.NET版本
  • avalonia android TextBox多行模式下回车会关闭输入法问题
  • 每周读书与学习-初识JMeter 元件(二)
  • client-go限速之QPS、Burst 和 RateLimiter
  • 三度蝉联Gartner SASE领导者:唯一厂商的技术实力解析
  • 基础命令
  • 水水水 || CSP-S 2025 初赛
  • python实现网站登录会话脚本 - wanghongwei
  • HCM 性能优化函数
  • Nginx配置里alias和root的区别
  • 国产DevOps生态崛起:Gitee如何赋能企业数字化转型
  • 【OpenCV】10 图像滤波
  • 基于java+springboot的社区居民诊疗健康管理系统(源代码+文档+讲解视频) - 指南
  • 时序数据库IoTDB的六大实用场景盘点 - 指南
  • 50系GPU上安装MMCV
  • K8S的CoreDns配置文件添加域名解析
  • 20250308_信安一把梭_web
  • nodify_介绍及安装
  • MQTT协议(消息队列遥测传输)
  • 如何构建embeding 的就是pytorch 中
  • 萤石设备视频接入平台EasyCVR国标GB28181视频平台整合铁路抑尘喷洒智能视频监控方案