sto testando in Chrome versione 42.0.2311.152m e voglio attuare per aprire una finestra su un notificationclick come in questo esempio: (fonte: https://developer.mozilla.org/en-US/docs/Web/API/WindowClient )clients.openWindow() "Non è consentito aprire una finestra." su un ServiceWorker Google Chrome
self.addEventListener('notificationclick', function(event) {
console.log('On notification click: ', event.notification.tag);
event.notification.close();
// This looks to see if the current is already open and
// focuses if it is
event.waitUntil(clients.matchAll({
type: "window"
}).then(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url == '/' && 'focus' in client)
return client.focus();
}
if (clients.openWindow)
return clients.openWindow('/');
}));
});
mio filestructure è come:
https://myurl.no-ip.org/app/index.html
https://myurl.no-ip.org/app/manifest.json
https://myurl.no-ip.org/app/service-worker.js
ho il problema che ottengo sempre un
InvalidAccessError
quando si chiama clients.openWindow ('/') o clients.openWindow ('https://myurl.no-ip.org/app/index.html') nei servizi-worker.js, ricevo l'errore:
{code: 15,
message: "Not allowed to open a window.",
name: "InvalidAccessError"}
Il "cliente tornare. focus() "linea non viene mai raggiunta perché client.url non è mai solo '/'. Guardando
clients.matchAll({type: "window"})
.then(function (clientList) {
console.log(clientList[0])});
vedo la mia attuale WindowClient:
{focused: false,
frameType: "top-level",
url: "https://myurl.no-ip.org/app/index.html",
visibilityState: "hidden" }
Le proprietà 'concentrato' e 'visibilityState' siano corretti e cambiare in modo corretto.
Facendo un focus di chiamata manuale
clients.matchAll({type: "window"})
.then(function (clientList) {
clientList[0].focus()});
ricevo l'errore:
{code: 15,
message: "Not allowed to focus a window.",
name: "InvalidAccessError"}
Credo che il problema è che l'URL non è solo '/'. Hai qualche idea per questo?
Grazie mille!
migliori saluti
Andi
Non ho ancora visto questo errore specifico e non riesco a riprodurlo da solo. Chrome 43 sarà presto la versione stabile (e già è su alcune piattaforme). Puoi riprodurlo lì o in Chrome dev/Canary? –
Abbiamo un codice simile che sembra funzionare su Chrome su Mac, ma non su Chrome su Windows. Con quale sistema operativo state testando? –