3

我一直在玩弄 CefSharpCefGlue,并设法让 CefSharp 在 C# 应用程序中运行良好。

使用 CefSharp,我能够执行 JavaScript 并从内存中加载 HTML。例如,要执行一些 JavaScript,可以这样做:

view.ExecuteScript("setInterval(function(){alert(\"Hello\")},3000);");

要加载一些 HTML:

model.LoadHtml(string.Format("<html><body><a href='{0}'>CefSharp Home</a></body></html>", home_url));

我知道我可以<audio>加载从某个 Web 服务器加载的一些文件。有没有办法从本地文件或通过 CefGlue/Sharp 的流加载音频?

更好的是,如何使用“动态”JavaScript(例如通过使用ExecuteScript(...)上面的)来完成?

4

1 回答 1

1

我已经想通了。它是通过模拟 Web 服务器来完成的。困难似乎在于对所请求内容的解释,这似乎是通过解析请求的 URL 来完成的。否则一切都很好。

public bool OnBeforeResourceLoad(IWebBrowser browser, 
    IRequestResponse requestResponse)
{
    IRequest request = requestResponse.Request;

    if (request.Url.EndsWith(".gif")) {
        MemoryStream stream = new System.IO.MemoryStream();
        Properties.Resources.FooImage.Save(
            stream, System.Drawing.Imaging.ImageFormat.Bmp);
        requestResponse.RespondWith(stream, "image/gif");
    }
    else {

        Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes(
            "<html><body><img src=\"foo.gif\" /></body></html>"));
        requestResponse.RespondWith(resourceStream, "text/html");
    }

    return false;
}
于 2012-09-09T16:03:41.707 回答