permission-helper.js (855B)
1 export function permissionTest(origin, sender) { 2 function ping(message) { 3 if (!globalThis.WorkerGlobalScope) { 4 window.top.postMessage(message, origin); 5 } else { 6 globalThis.postMessage(message); 7 } 8 n.close(); 9 } 10 11 const n = new Notification(sender); 12 const permission = Notification.permission; 13 n.onshow = () => ping({ sender, permission, shown: true }); 14 n.onerror = () => ping({ sender, permission, shown: false }); 15 16 if (!globalThis.WorkerGlobalScope) { 17 Notification.requestPermission().then(permission => ping({ sender: `${sender}Request`, permission })); 18 19 const workerUrl = new URL(`./permission-worker.js`, import.meta.url); 20 workerUrl.searchParams.set("sender", `${sender}Worker`); 21 const worker = new Worker(workerUrl, { type: "module" }); 22 worker.onmessage = ev => ping(ev.data, origin); 23 } 24 }