获取:untured(在承诺中)TypeError:试图打开窗口时出了问题
这是我在服务工作者中的代码通知单击事件。一切正常,但是我会得到此控制台错误未被发现(在Promise)TypeError:试图打开窗口时出现问题。
单击“操作”按钮时。。
为什么显示此控制台错误?
self.addEventListener('notificationclick', e => {
const nf = e.notification;
nf.close();
if (!e.action) {
if(nf.data && nf.data.url)
{
const url = nf.data.url;
urltoopen(url,e);
}
return;
}
if(e.action === 'close'){
return;
}
if(nf.data && nf.data.listurl)
{
const listurl = nf.data.listurl;
Object.keys(listurl).forEach((k) => {
if(k===e.action)
{
const actionurl=listurl[k];
urltoopen(actionurl,e);
}
});
}
});
function urltoopen(url,e) {
const urlToOpen = new URL(url, self.location.origin).href;
const promiseChain = clients.matchAll({
type: 'window',
includeUncontrolled: true
})
.then((windowClients) => {
let matchingClient = null;
for (let i = 0; i < windowClients.length; i++) {
const windowClient = windowClients[i];
if (windowClient.url === urlToOpen) {
matchingClient = windowClient;
break;
}
}
if (matchingClient) {
return matchingClient.focus();
} else {
return clients.openWindow(urlToOpen);
}
});
e.waitUntil(promiseChain);
}
This is my code in service worker for notification click event. Everything works fine, but I get this console error Uncaught (in promise) TypeError: Something went wrong while trying to open the window.
when I click the action button.
Why is this console error shown?
self.addEventListener('notificationclick', e => {
const nf = e.notification;
nf.close();
if (!e.action) {
if(nf.data && nf.data.url)
{
const url = nf.data.url;
urltoopen(url,e);
}
return;
}
if(e.action === 'close'){
return;
}
if(nf.data && nf.data.listurl)
{
const listurl = nf.data.listurl;
Object.keys(listurl).forEach((k) => {
if(k===e.action)
{
const actionurl=listurl[k];
urltoopen(actionurl,e);
}
});
}
});
function urltoopen(url,e) {
const urlToOpen = new URL(url, self.location.origin).href;
const promiseChain = clients.matchAll({
type: 'window',
includeUncontrolled: true
})
.then((windowClients) => {
let matchingClient = null;
for (let i = 0; i < windowClients.length; i++) {
const windowClient = windowClients[i];
if (windowClient.url === urlToOpen) {
matchingClient = windowClient;
break;
}
}
if (matchingClient) {
return matchingClient.focus();
} else {
return clients.openWindow(urlToOpen);
}
});
e.waitUntil(promiseChain);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论