PWA открывает Safari по почте. Есть ли способ сделать это нет? - PullRequest
0 голосов
/ 17 января 2019

Я работаю над преобразованием существующего приложения в PWA. Часть этого PWA имеет дело с POST из формы входа в систему с перенаправлением на другую страницу. В Safari, если вы откроете приложение с главного экрана и попытаетесь войти в систему, в Safari откроется новая вкладка. Я бы хотел, чтобы этого не случилось.

Я пытался просто вернуться на POST и кэшировать перенаправленную страницу. Кажется, это работает немного, но потом вернется к старым способам. Я отлаживал код, и он, кажется, переключается, как только получает ответ от выборки. Вот мой обработчик выборки

  if ((e.request.cache === 'only-if-cached' && e.request.mode !== 'same-origin') || (e.request.type === "POST") {
    return;
}

e.respondWith(
    caches.match(e.request)
        .then(function (response) {
            //Cache Hit

            // IMPORTANT: Clone the request. A request is a stream and
            // can only be consumed once. Since we are consuming this
            // once by cache and once by the browser for fetch, we need
            // to clone the response.
            var fetchRequest = e.request.clone();

            return fetch(fetchRequest).then(
                function (response) {
                    //Check to see if we are valid
                    if (!response || response.status !== 200 || response.type !== 'basic') {
                        return response;
                    }
                    // IMPORTANT: Clone the response. A response is a stream
                    // and because we want the browser to consume the response
                    // as well as the cache consuming the response, we need
                    // to clone it so we have two streams.

                    var responseToCache = response.clone();

                    caches.open(CACHE_NAME)
                        .then(function (cache) {
                            cache.put(e.request, responseToCache);
                        });
                    return response;
                })
        }))

Я ожидал, что Safari не откроется, но он открывается, и у меня нет идей, как это исправить.

...