gpt4 book ai didi

c# - HTML 5 list 无法通过 iFrame 正常工作

转载 作者:太空狗 更新时间:2023-10-29 13:17:09 25 4
gpt4 key购买 nike

我有一个包含多个 C# 项目的应用程序,如下所示

  • CRM.DomainLogic
  • CRM.Web
  • Warehouse.DomainLogic
  • Warehouse.Web
  • ,...

每个 web 项目(例如 CRM.Web)都有自己的“html View ”和“js Controller ”还有其他几种类型的静态文件。

为了简化部署,我想使用 Html5 list 。

因此,为了使跨项目的分离部署成为可能,我使用了 iframe。由于CRM.Web的变化,客户将获得CRM文件,无需再次下载Warehouse.Web文件!

步骤:

1- 我有一个 Web API 方法,它返回 Web 程序集的所有名称,例如 CRM.Web 和 Warehouse.Web

2- 我有另一个 Web API 方法,它获取程序集名称作为参数并返回指向该项目中文件的 list 文件内容。

public HttpResponseMessage GetManifestByAssemblyName(String assemblyName)

此处省略代码

response.Content = new StringContent(manifestBody.ToString(), Encoding.UTF8, "text/cache-manifest");

3- 在客户端,我为每个程序集创建一个新的 iFrame,并将 src 设置为另一个返回 html 主体的 web api 方法,它的 list 被分配给返回 list 主体的 WebAPI 方法的地址(GetManifestByAssemblyName)

    String result = String.Format
(@"<html manifest='{0}'> </html>", "/api/AppManifest/GetManifestByAssemblyName?assemblyName=" + assemblyName + ".manifest");

response.Content = new StringContent(result, UTF8Encoding.Default, "text/html");

iFrame的代码:

var htmlPageUrl = "/api/AppManifest/GetHtmlContainerForManifestByName?assemblyName=" + name;

var iFrame = document.createElement("iFrame");
iFrame.setAttribute("src", htmlPageUrl);
iFrame.setAttribute("sandbox", "allow-same-origin");
iFrame.setAttribute("seamless", "seamless");
document.body.appendChild(iFrame);

当我运行应用程序时,它获取程序集名称,然后创建 iFrame,每个 iFrame 自动获取自己的 list 。

但是 window.applicatioCache.status 为 0,这意味着它没有缓存。

当我进入资源页面时,我可以看到以下内容:

enter image description here

但是当我请求其中一个被缓存的文件时,该请求将不会使用缓存。

我知道网上没有关于我的作品的引用资料,这完全是我的想法,我知道这里可能会出现一些安全限制,但是有什么解决方案可以解决问题吗?

提前致谢。

备注:You can download sample application source code here.

然后按Ctrl+S保存文件,先阅读Index.html注释。

最佳答案

我尝试了您的示例项目。我必须将 sandbox 属性更改为 allow-scripts,否则 Chrome 会阻止 JS 从 iFrame 执行。

除此之外,我认为您的缓存工作正常。请参见下面的屏幕截图。 enter image description here

我认为您混淆的根本原因是您正在检查没有 list 的主文档的 appCache 状态。 list 用于在 iFrame 中加载的文档。所以在 Chrome 中,如果你切换到单个 iFrame 并检查状态,它会显示 Idle (1) 这意味着缓存处于事件状态!见下文:

enter image description here

希望这对您有所帮助!

关于c# - HTML 5 list 无法通过 iFrame 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com