我一直在玩CefSharp和CefGlue,并设法让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(...)
)?
答案 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;
}