ServiceWorker openWindow (), возвращающий InvalidAccessError - PullRequest
0 голосов
/ 12 декабря 2018

Я использую 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.У нас есть нестандартное поведение, которое мы добавили, поэтому изменение имени.

Я чувствую, что здесь есть огромный шаг, который я пропускаю.Любая помощь приветствуется.Спасибо!

...