后台定期同步演示 - 离线内容更新
注册Periodic Background Sync,让应用在后台定期获取最新数据并更新缓存。
UD5工具箱
可视化演示 Service Worker 从解析到冗余的完整生命周期
-// Service Worker 生命周期示例
const VERSION = 'v1.0.0';
// 📄 解析阶段:浏览器下载并解析SW脚本
self.addEventListener('install', (event) => {
// 🔧 安装中 (Installing)
console.log('[SW] install 事件触发');
event.waitUntil(
caches.open('my-cache-v1').then(cache => {
return cache.addAll(['/index.html', '/style.css', '/app.js']);
})
);
// 可调用 skipWaiting() 跳过等待
// self.skipWaiting();
});
self.addEventListener('activate', (event) => {
// ⚡ 激活中 (Activating)
console.log('[SW] activate 事件触发');
event.waitUntil(
caches.keys().then(keys => {
return Promise.all(
keys.filter(k => k !== 'my-cache-v1').map(k => caches.delete(k))
);
})
);
// 立即控制所有页面
// clients.claim();
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then(res => res || fetch(event.request))
);
});
skipWaiting()。clients.claim() 可立即控制所有页面。skipWaiting() 在 install 事件中调用,可以让新安装的 SW 跳过等待阶段,立即进入激活流程。默认情况下,新 SW 会等待所有使用旧 SW 的页面关闭后才激活。适用场景:需要立即推送更新的情况。注意:跳过等待可能导致页面资源版本不一致,需配合 clients.claim() 使用。clients.claim() 在 activate 事件中调用,让新激活的 SW 立即接管所有已打开的页面,无需等待页面刷新。默认情况下,激活的 SW 只控制之后打开的页面。结合 skipWaiting() 可实现 SW 的无缝更新,让用户始终使用最新版本。skipWaiting() 或关闭所有页面来激活新版本。也可手动调用 registration.update() 来触发更新检查。/app/sw.js 的默认 scope 是 /app/,可控制 /app/ 下的所有页面。可通过 register('/sw.js', {scope: '/app/'}) 显式指定。合理设置 scope 可以精确控制 SW 的影响范围。registration.unregister() 注销 SW;4) SW 脚本 URL 返回 404 或其他错误。console.log(),日志会显示在 DevTools 的 console 中;4) 使用 chrome://serviceworker-internals/ 查看所有已注册的 SW;5) 在 DevTools → Sources 中可以直接在 SW 脚本中设置断点。注册Periodic Background Sync,让应用在后台定期获取最新数据并更新缓存。
创建当用户离线时展示的简单HTML页面,结合Service Worker使用。
打开一个始终置顶的小窗口,在其中显示自定义内容(例如笔记/时钟),实验新API。
团队成员每日更新工作状态和身体状态,便于经理远程了解。
在单页内模拟MPA过渡效果,自定义进场/出场动画,体验View Transitions API丝滑切换。
展示一些常用内置HTML元素和自定义元素例子,提供代码复制。
上传 GIF 动画,提取每一帧并拼接为单张精灵表图片,可设置排列方式,用于游戏开发。
发起请求获取当前URL或任意允许CORS的URL的Response Headers,展示详情。
从眉毛、眼睛、嘴巴等部件中拖拽组合,生成独一无二的日式颜文字表情,一键复制。
粘贴terraform plan输出,解析并显示资源的增加、更改与销毁列表,辅助审查。
调节频率、包络和波形,合成短促的UI提示音并下载WAV。
提供一份涵盖性能、安全、备份、监控等上线前检查清单,可自定义勾选。
配置启动画面背景色与图标,生成对应manifest和meta标签代码。
使用Service Worker拦截fetch请求,并返回用户自定义的JSON模拟数据,用于前端独立开发。
解析标准Cron表达式,显示未来多次执行的具体日期时间,辅助验证定时任务配置。
随机组合种族、职业、性格、秘密和过往事件,创造丰富的虚构角色背景。
配置字体、颜色、背景,生成可粘贴到浏览器控制台的%c格式化日志代码。
创建一个自定义元素,展示 constructor、connectedCallback、attributeChangedCallback 等钩子的触发时机。
粘贴Link rel=preload头字段,解析展示服务器计划推送的资源列表。
选择各种数据类型演示structuredClone的深拷贝能力,对比JSON.parse的限制。
选择平台和分享参数,生成分享到Twitter、Facebook、WhatsApp等的URL链接及按钮。
编写O与对应KR,可视化进度条与完成度,团队或个人目标跟踪的轻量替代。
选择算法并随机生成数组,以彩色条动画展示排序过程,帮助理解算法。
展示各种 HTML5 验证属性(required, pattern, min, max 等)和自定义验证消息的效果。
利用浏览器地理位置和公开API,显示当前位置的天气图标和温度。
创建活动链接,分享后收集参与者出席回应,实时显示参与、婉拒与未回复名单。
创建闪卡并根据掌握程度放入5个盒子,按照不同间隔自动提供今日复习卡组。
将同类待办归入电话、外出、电脑等情境,一目了然优化执行顺序。
生成类似社交媒体的Emoji反应选择栏HTML/CSS代码,带计数和动画。
实时显示touchstart/move/end事件的所有属性:坐标、力度、半径与角度,辅助手势开发。