通知点击事件服务工作者
Posted
技术标签:
【中文标题】通知点击事件服务工作者【英文标题】:notificationclick event service worker 【发布时间】:2018-09-07 14:56:30 【问题描述】:
我正在与服务人员合作以在我的用户之间显示通知。在我的代码中,我包含了notificationclick
事件。通过这个事件,我试图管理两个案例。第一种情况,如果在我的浏览器中打开了我网站的页面,请不要打开它,而是专注于它。第二种情况,如果我的浏览器没有显示我的网站,请打开它并专注于它。但是我没有成功...
这是我当前的代码:
self.addEventListener('notificationclick', function (e)
console.log('notification was clicked')
var notification = e.notification;
var action = e.action;
if (action === 'close')
notification.close();
else
// This looks to see if the current is already open and
// focuses if it is
e.waitUntil(
self.clients.matchAll().then(function(clientList)
console.log(clientList)
if (clientList.length > 0)
console.log(clientList[0])
return clientList[0].focus();
return self.clients.openWindow('/');
)
);
;
);
【问题讨论】:
【参考方案1】:self.addEventListener("notificationclick", (event) =>
event.waitUntil(async function ()
const allClients = await clients.matchAll(
includeUncontrolled: true
);
let chatClient;
let appUrl = 'xyz';
for (const client of allClients)
//here appUrl is the application url, we are checking it application tab is open
if(client['url'].indexOf(appUrl) >= 0)
client.focus();
chatClient = client;
break;
if (!chatClient)
chatClient = await clients.openWindow(appUrl);
());
);
【讨论】:
我们需要在哪个地方放置这段代码。服务人员或内部项目 @satish Kumar 你可以在服务工作者注册文件中添加这个 嘿,有人成功了吗?我应付不来。使用 event.waitUntil 和不使用该事件都不会触发。什么也没发生。请帮忙:)以上是关于通知点击事件服务工作者的主要内容,如果未能解决你的问题,请参考以下文章