Javascript 禁用除IE之外的所有浏览器的HTML5 AppCache
我有一个基于角度的PWA应用程序(基于服务工作者),它在所有现代浏览器中都能正常脱机工作,为了支持IE,我添加了“manifest.appcache”,它使IE能够通过HTML5应用程序缓存脱机工作 除了IE之外,还有什么方法可以在所有其他浏览器中禁用Appcache?目前在现代浏览器中 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
<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");
}
}