Отключить HTML5 AppCache всех браузеров, кроме IE - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть приложение PWA на основе Angular (на основе сервисного работника), которое отлично работает в автономном режиме во всех современных браузерах. Для поддержки IE я добавил "manifest.appcache", который позволяет IE работать в автономном режиме HTML5 App Cache.

Есть ли способ отключить Appcache во всех других браузерах, кроме IE? В настоящее время в современных браузерах Appcache также работает вместе с сервисным работником

, который я пробовал ниже

<html lang="en" manifest="manifest.appcache" *ngIf="isIE">
<html lang="en" *ngIf="!isIE">

В компоненте

const isIE = /msie\s|trident/i.test(window.navigator.userAgent);

Но, похоже, HTML рендерится до значение компонента isIE

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Я не проверял IE, но из этого ответа SO похоже, что он не будет работать, если manifest установлена ​​на стороне клиента.

В этом В этом случае вы можете установить этот атрибут на стороне сервера, используя angular universal.

import {Request} from 'express';
import {REQUEST} from '@nguniversal/express-engine/tokens';

public constructor(@Inject(PLATFORM_ID) private platformId, 
            @Optional() @Inject(REQUEST) protected request: Request,
            @Inject(DOCUMENT) private  doc: Document, private renderer: Renderer2)
    {

        if(!isPlatformBrowser(platformId))
        {
          const isIE = /msie\s|trident/i.test(request.headers['user-agent']);
          if(isIE)
          {
            this.renderer.setAttribute(this.doc.documentElement,"manifest","manifest.appcache");
          }
        }

Если вы не используете angular universal и не можете / не хотите его использовать, вам нужно найти какой-то другой способ изменить сторону файлового сервера index.html перед его возвратом.

0 голосов
/ 13 апреля 2020

Я пытался найти, но не нашел решения этой проблемы.

Мне не удалось отключить AppCache для других браузеров, кроме IE браузера.

Даже если вам удастся удалить атрибут манифеста, браузер также будет использовать Appcache.

Единственный способ отключить его - удалить файл манифеста с сервера, что также отключит Appcache для браузера IE. См. Здесь.

Я предлагаю вам показать в окне IE, что ваше приложение не поддерживает автономный режим для браузера IE, и порекомендовать вашим клиентам использовать новейшие браузеры Microsoft. .

...