Я использую ServiceWorker
, чтобы открыть новое окно (идея здесь в том, что у нас есть много модалов, которые мы пытаемся использовать, чтобы использовать плавающие окна на одном соединении).Пока все хорошо, но я не могу открыть открытое окно.Я продолжаю получать InvalidAccessError
.
В документации сказано: Если вызывающий скрипт не имеет разрешения на показ всплывающих окон, openWindow()
выдаст InvalidAccessError
.
Использование Chrome 71
this.workerContext
- это ServiceWorker
.
private onPopOutRequest(clientId: string, message: any) {
this.logMessage(`Client (${clientId}) requested PopOut.`);
this.workerContext.clients.openWindow(window.location.toString()).then(windowClient => {
//do stuff
}).catch(err => {
console.log(err.message);
});
}
Вышеприведенный код вызывается из функции handleRequest()
, которая в основном является просто оператором switch для различных сообщений.Это вызывается из прослушивателя событий:
self.addEventListener("message", (event: any) => {
if(event)
sw.handleMessage(event);
});
Где sw
- это ...
var sw = new SharedDataWorker(self);
SharedDataWorker
- это ServiceWorker
.У нас есть нестандартное поведение, которое мы добавили, поэтому изменение имени.
Я чувствую, что здесь есть огромный шаг, который я пропускаю.Любая помощь приветствуется.Спасибо!