使用带有CefSharp或CefGlue的JavaScript的本地或流式音频

时间:2012-09-08 16:08:35

标签: c# javascript html5 audio chromium

我一直在玩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));

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

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

1 个答案:

答案 0 :(得分: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;
}