Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用除IE之外的所有浏览器的HTML5 AppCache_Javascript_Angular_Internet Explorer_Progressive Web Apps_Html5 Appcache - Fatal编程技术网

Javascript 禁用除IE之外的所有浏览器的HTML5 AppCache

Javascript 禁用除IE之外的所有浏览器的HTML5 AppCache,javascript,angular,internet-explorer,progressive-web-apps,html5-appcache,Javascript,Angular,Internet Explorer,Progressive Web Apps,Html5 Appcache,我有一个基于角度的PWA应用程序(基于服务工作者),它在所有现代浏览器中都能正常脱机工作,为了支持IE,我添加了“manifest.appcache”,它使IE能够通过HTML5应用程序缓存脱机工作 除了IE之外,还有什么方法可以在所有其他浏览器中禁用Appcache?目前在现代浏览器中 Appcache还与服务工作者一起工作 我在下面试过 <html lang="en" manifest="manifest.appcache" *ngIf="isIE"> <html lang

我有一个基于角度的PWA应用程序(基于服务工作者),它在所有现代浏览器中都能正常脱机工作,为了支持IE,我添加了“manifest.appcache”,它使IE能够通过HTML5应用程序缓存脱机工作

除了IE之外,还有什么方法可以在所有其他浏览器中禁用Appcache?目前在现代浏览器中 Appcache还与服务工作者一起工作

我在下面试过

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

但似乎HTML呈现在isIE的组件集值之前,我试图搜索,但没有得到任何解决方案

除了IE浏览器之外,我没有任何方法可以禁用其他浏览器的AppCache

即使您设法删除了manifest属性,浏览器也将使用Appcache

禁用它的唯一方法是从服务器中删除清单文件,这也将禁用IE浏览器的Appcache


我建议您在IE窗口上显示一条消息,说明您的应用程序不支持IE浏览器的脱机模式,并建议您的客户端使用最新的Microsoft浏览器。

我还没有在IE上进行测试,但从这一点看,如果将
清单设置为客户端,则它似乎无法工作

在这种情况下,可以使用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
文件服务器端。

这不是解决方案没有正式的方法来执行此操作。动态添加清单可能需要刷新页面才能生效,这可能是用户不想要的行为,也可能导致性能问题。我会尝试寻找其他可能的方法,如果我得到任何有用的信息,我会通知你。谢谢你的理解。
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");
          }
        }