使用 CefGlue 从磁盘加载 html 文件
Load html file from disk using CefGlue
我正在玩 CefGlue(围绕嵌入铬的 .net 包装器)我需要做一些概念证明,所以我创建了我自己的特殊 html 文件,其中包含我需要测试的内容。但是我找不到加载这些文件的方法。
CefBrowserHost.CreateBrowser(cefWindowInfo, cefClient, cefBrowserSettings, url);
需要一个 url,并且没有接受内容作为字符串的重载方法。所以问题是:如何从磁盘加载 html 文件?
我没有使用过 CefGlue - 但通常您可以使用自定义的 cef 资源处理程序来加载文件。简而言之,当 CEF 看到您的 URL 时,它们将通过您设置的资源覆盖处理程序进行调用,然后将该资源读取到字节流中。在我们的例子中,我们读取了一个编译到我们的应用程序资源中的 html 文件。在您的情况下,我想您当时也可以从磁盘读取资源,尽管我没有这样做。如果您可以将资源编译到您的 C# 应用程序中,您可以根据需要将 html 文件添加到资源中。
在我们的例子中,我们将 url 传递给 CreateBrowserSync(),CEF 最终调用我们的 ResourceHandler 来加载它。 CefClient c++ 示例有一个很好的例子,请参阅 resource_util_win.cpp。
这是在 CefResourceHandler 的处理程序重写中设置的。我们覆盖了 GetResourceHandler, their example overrides ProcessRequest in SchemeHandler。请参阅 CefClient 示例中的 scheme_test.cpp。
他们的示例中的大部分代码都是漂亮的样板,您应该能够使用他们拥有的代码作为您实现的基础——虽然代码太多了,无法在此处一一列出。
我找到了一个解决方案:只需在 url 参数中传递文件的完整路径,一切正常。这就像 chrome 从磁盘打开文件所以我不知道为什么我第一次没有尝试。
我正在玩 CefGlue(围绕嵌入铬的 .net 包装器)我需要做一些概念证明,所以我创建了我自己的特殊 html 文件,其中包含我需要测试的内容。但是我找不到加载这些文件的方法。
CefBrowserHost.CreateBrowser(cefWindowInfo, cefClient, cefBrowserSettings, url);
需要一个 url,并且没有接受内容作为字符串的重载方法。所以问题是:如何从磁盘加载 html 文件?
我没有使用过 CefGlue - 但通常您可以使用自定义的 cef 资源处理程序来加载文件。简而言之,当 CEF 看到您的 URL 时,它们将通过您设置的资源覆盖处理程序进行调用,然后将该资源读取到字节流中。在我们的例子中,我们读取了一个编译到我们的应用程序资源中的 html 文件。在您的情况下,我想您当时也可以从磁盘读取资源,尽管我没有这样做。如果您可以将资源编译到您的 C# 应用程序中,您可以根据需要将 html 文件添加到资源中。
在我们的例子中,我们将 url 传递给 CreateBrowserSync(),CEF 最终调用我们的 ResourceHandler 来加载它。 CefClient c++ 示例有一个很好的例子,请参阅 resource_util_win.cpp。
这是在 CefResourceHandler 的处理程序重写中设置的。我们覆盖了 GetResourceHandler, their example overrides ProcessRequest in SchemeHandler。请参阅 CefClient 示例中的 scheme_test.cpp。
他们的示例中的大部分代码都是漂亮的样板,您应该能够使用他们拥有的代码作为您实现的基础——虽然代码太多了,无法在此处一一列出。
我找到了一个解决方案:只需在 url 参数中传递文件的完整路径,一切正常。这就像 chrome 从磁盘打开文件所以我不知道为什么我第一次没有尝试。