【问题标题】:Loading .html, with css references, file Embedded In The Resources加载 .html,带有 css 引用,文件嵌入在资源中
【发布时间】:2013-04-09 01:20:38
【问题描述】:

在我的 Windows 窗体应用程序中,我有一个简单的 Web 浏览器,它应该运行一个包含 css 样式的注册表单的 .html 文件。使用webBrowser1.Navigate("http://www.example.com/mypage.html");远程加载页面时运行良好;但是,当我尝试通过将Building Action 设置为Embedded Resource 来在资源中嵌入.html 文件[连同所需的css 文件] 时,webBrowser 仅导航到.html 文件而不导航到检测css 文件,这会导致令人毛骨悚然的页面外观。

这是我目前尝试过的代码。

.html 文件:

  <link href="lang/en/compact.css" rel="stylesheet" type="text/css" />
  <link href="lang/en/lang.css" rel="stylesheet" type="text/css" />
  <link href="img/basics.css" rel="stylesheet" type="text/css" />

我如何从Embedded Resources 获取.html 文件:

using (Stream stream = Assembly.GetExecutingAssembly()
                   .GetManifestResourceStream("DummyBrowserFormImprovements.HTML." + "mypage.html"))
    if (stream != null)
        using (var reader = new StreamReader(stream))
        {
            string result = reader.ReadToEnd();
            dummyBrowser1.DocumentText = result;
        }

不幸的是,上述方法只加载了.html文件,而没有识别其中引用的css文件;因此,任何有关如何在 Windows 窗体中嵌入使用js, css 外部文件的.html 文件以及如何将其加载到webBrowser 中的详细答案都将非常赞赏。我希望我能清楚地表达我的问题并提前感谢。

【问题讨论】:

    标签: c# winforms browser


    【解决方案1】:

    问题可能是因为其他文件仍嵌入在您的应用程序中。浏览器会在哪里找到它们?

    您可以将所有需要的嵌入文件写入临时目录,并让您的网络浏览器从那里加载 .html 页面。加载 html 页面后,它应该能够找到您的其他资源,因为它们将位于同一目录(或您创建的任何结构)中。

    基本上我是说您可以将所有文件提取到一个临时目录结构中,例如:

    C:\mytempsite\mypage.html
    C:\mytempsite\lang\en\compact.css
    C:\mytempsite\lang\en\lang.css
    C:\mytempsite\img\basics.css
    

    然后您可以将网络浏览器设置为navigate 为“C:\mytempsite\mypage.html”

    只要您可以在没有应用程序的情况下直接导航到此页面,并且页面正确加载,那么当您的应用程序导航到那里时,它应该可以在您的应用程序中工作。只需确保 mypage.html 具有格式良好的 html 并且是一个完整的页面。

    【讨论】:

    • 这不起作用我已经尝试过这个浏览器 webBrowser.DocumentText = File.ReadAllText(@"C:\mypage.html"); [拥有所有需要的资源]它也无法加载它们......'
    • 有没有其他方法可以直接从资源中运行而无需解压?
    • 我不知道,也许其他人可以想到,但从逻辑上讲,我不明白如果 Web 浏览器控件仍然嵌入在您的应用程序中,它们如何找到 css 文件。我能想到的唯一其他方法是将所有 css 和其他文件作为内联代码。然后你只有一个文件,可以将你的网络浏览器 DocumentText 设置为那个文件的文本。
    • 可能有一种方法可以让我检测到浏览器何时请求css文件,然后我用嵌入的资源文件响应浏览器。
    • 看看这个问题stackoverflow.com/questions/1254605/…似乎有很多关于使用res://协议的信息这可能是你需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2011-08-01
    • 2011-06-29
    • 1970-01-01
    • 2012-11-20
    • 2019-01-09
    相关资源
    最近更新 更多