通知与页面可见性
Notification 如何创建与关闭?
const n = new Notification("Title text!");
n.onshow = () => console.log("shown");
n.onclick = () => console.log("clicked");
n.onclose = () => console.log("closed");
n.onerror = () => console.log("error");
setTimeout(() => n.close(), 1000);
| 成员 | 作用 |
|---|---|
close() | 隐藏通知 |
onshow | 显示时触发 |
onclick | 点击时触发 |
onclose | 关闭时触发 |
onerror | 出错时触发 |
通知权限有什么约束?
- 上下文: 只能在安全上下文 (HTTPS) 中触发;
- 授权: 每个源必须得到用户允许;
- 频率: 每个域只能发起一次权限请求;
- 请求:
Notification.requestPermission()返回"granted" | "denied" | "default";
Notification.requestPermission().then((permission) => {
console.log("User responded:", permission);
});
Page Visibility 如何感知页面前后台?
| 成员 | 作用 |
|---|---|
document.visibilityState | "visible"/"hidden"/"prerender"/"unloaded" |
document.hidden | 页面是否隐藏 |
document.addEventListener("visibilitychange", handler) | 可见性变化事件 |
document.addEventListener("visibilitychange", () => {
if (document.hidden) {
// 暂停轮询、动画或定时任务
}
});
- 用途: 页面不可见时停止高频任务, 降低能耗, 回前台时恢复;