我正在尝试为网络实施推送通知。当试图检查天气网络应用程序是否打开时,Firefox会在服务工作者身上抛出一个奇怪的错误。它在chrome上运行良好。
"服务工作者事件waitUntil()传递了一个拒绝的承诺,其中包含' NotSupportedError:不支持操作'。"
如果我设置' includeUncontrolled'为了假,firefox和chrome都返回了windowClients'一个空白数组。没有检测到页面。
这是我的推送事件处理程序,' clients.matchAll'是第50行。
// Push Notification Event Handler
self.addEventListener('push', function(event) {
// Push Received
event.waitUntil(
// Check app page open
self.clients.matchAll({ // Line 50
includeUncontrolled: true, // Error occuring when enabling this
type: 'window'
})
.then(function(windowClients) {
// If no page instances show notification
if (!windowClients.length) {
// Get subscription key to call api
return self.registration
.pushManager
.getSubscription()
.then(function(subscription) {
if (subscription) {
// Get push message data
var token = encodeURIComponent(String(subscription.endpoint).split('/').pop());
var url = 'api/push/data?token=' + token + '&type=' + getPushDeviceType();
return self.fetch(url, {credentials: 'include'})
.then(function(response) {
if (response.status === 200) {
return response.json()
.then(function(data) {
if (data) {
// Display notification
return self.registration
.showNotification('App Notifications', {
'body': data.msg,
'icon': data.img,
'tag': 'app'
});
} else {
return;
}
});
} else {
return;
}
});
} else {
return;
}
});
} else {
return;
}
})
);
});
Firebug截图
答案 0 :(得分:2)
Firefox 45中引入了includeUncontrolled
选项:https://bugzilla.mozilla.org/show_bug.cgi?id=1229056。
它还没有被移植到Firefox 44:https://hg.mozilla.org/releases/mozilla-release/file/f315bde4ae0f/dom/workers/ServiceWorkerClients.cpp#l583。