屏幕常亮锁工具 - Wake Lock API演示
请求浏览器保持屏幕唤醒,防止自动锁屏,显示当前唤醒锁状态。
UD5工具箱
检测中...
需要 HTTPS + manifest.json + Service Worker 才能触发真实事件
{
"name": "My PWA App",
"short_name": "PWA App",
"description": "快速、可靠的体验",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#4285f4",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
beforeinstallprompt 是浏览器在 PWA 安装条件满足时触发的一个事件。它允许开发者拦截默认的安装提示,保存事件引用,然后在合适的时机(如用户点击自定义安装按钮)调用 prompt() 方法来显示安装对话框。这是实现自定义 PWA 安装体验的核心 API。
该事件在以下浏览器中支持:Chrome(桌面和Android)、Edge、三星浏览器、Opera 等基于 Chromium 的浏览器。iOS Safari 从 16.4 版本开始也部分支持。
浏览器触发 beforeinstallprompt 需要满足以下条件:
name、short_name、start_url、icons(至少 192x192 和 512x512)、display(推荐 standalone)。标准用法如下:
let deferredPrompt;
window.addEventListener('beforeinstallprompt', (e) => {
e.preventDefault(); // 阻止默认弹出
deferredPrompt = e; // 保存事件
// 显示自定义安装按钮
installBtn.style.display = 'block';
});
installBtn.addEventListener('click', async () => {
if (!deferredPrompt) return;
deferredPrompt.prompt();
const { outcome } = await deferredPrompt.userChoice;
console.log('用户选择:', outcome); // 'accepted' 或 'dismissed'
deferredPrompt = null;
});
注意:prompt() 只能调用一次,调用后事件即被消耗。需要在用户手势(点击)中调用。
iOS Safari 的 PWA 支持与传统 Chromium 浏览器不同:
beforeinstallprompt,用户需要手动点击分享按钮 → "添加到主屏幕"。许多网站会显示自定义引导横幅来提示用户。related_applications 等字段被支持。Service Worker 是 PWA 的核心组件,对于安装至关重要:
beforeinstallprompt。一个最简单的 Service Worker 注册示例:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
常见排查步骤:
chrome://flags 查看相关 PWA 标志是否被禁用。请求浏览器保持屏幕唤醒,防止自动锁屏,显示当前唤醒锁状态。
选择触发位置、箭头方向与样式,生成轻量悬停提示框代码。
绑定动画进度到滚动位置,交互式调整参数,直观理解scroll-timeline和view-timeline。
请求Screen Wake Lock防止屏幕关闭,监听释放事件,适用于观看长内容等场景。
设定物理页框数,输入页引用串,动画展示不同页面置换算法的缺页率。
配置内容和位置,生成使用最新HTML popover属性的轻量弹窗代码,无需JavaScript。
选择类型、作用域并填写描述,自动生成符合Conventional Commits规范的提交消息。
上传图标文件并设置背景色,模拟在 Android/iOS 主屏幕上的添加效果,检查视觉适配。
在线生成Lorem Ipsum占位文本,可指定段落数、单词数或字节数,用于设计排版和布局填充。
自定义箭头方向、颜色、大小和动画,生成无需JavaScript的纯CSS tooltip组件代码。
显示当前屏幕方向,并尝试锁定为横屏或竖屏模式,仅部分浏览器支持。
配置基于滚动位置触发的CSS @scroll-timeline动画,复制适配代码。
输入 HTML 或网址,提取所有标题标签,生成文档大纲树,检测跳跃和缺失。
编写Brainfuck代码,以可视化的方式步进执行,观察活动纸带和指针。
编写带有伪类的选择器,实时高亮匹配的HTML元素,探索现代CSS选择器的能力。
配置滚动容器与目标元素,自定义随滚动触发的关键帧动画,输出纯CSS代码。
勾选或调整所需的重置元素(盒模型、边距等),生成自定义CSS Reset片段,确保跨浏览器一致性。
模拟经典玩具,按方向键或虚拟旋钮绘制线条,按空格键晃动清除。
上传一组图片,设定每张展示秒数和转场,生成WebM视频幻灯。
可视化自定义导航栏样式、品牌Logo、菜单项及下拉,生成纯CSS或Bootstrap导航代码。
并列播放所有CSS内置缓动函数(ease, linear等)的动画效果,方便对比选择。
添加、列出和删除内容索引中的条目,展示离线可用内容。
请求和释放屏幕唤醒锁,并监听释放事件,适用于视频播放或演示场景。
分别使用主线程Canvas和OffscreenCanvas在Worker中渲染动画,对比FPS和流畅度。
拖放 lcov.info 文件,以颜色标示每行代码的覆盖状态。
实时预览并生成符合隐私法规的Cookie同意横幅HTML/CSS/JS代码,一键嵌入网站。
模拟资源请求,对比ETag值,展示返回304 Not Modified的缓存协商机制,理解HTTP缓存。
标准检查项清单,启动前逐项打勾,养成良好驾驶习惯。
加载Lottie动画JSON文件,播放并控制速度、方向,预览动效效果。
提取HTML中内联style属性或嵌入式style标签,转变为独立CSS规则,辅助样式重构。