WebBrowser,IPersistStreamInit和javascript

时间:2010-08-09 19:55:12

标签: delphi winapi webbrowser-control

对于我们的一个桌面应用程序,我们使用基于HTML的界面,从本地文件加载到WebBrowser控件中。

这很好用,但是现在我们想要从不同的源加载文件,并尝试使用IPersistStreamInit(例如MSDN上的这个示例)来传输它们。它似乎工作正常,除了引用的javascript .js文件(JQuery等)。它试图从“about:”位置加载那些导致错误。

我真正想要的是在流式传输其他文件时获取回调事件,并替换正确的数据。这可能要求有点过多,所以欢迎提供变通方法的建议!

2 个答案:

答案 0 :(得分:3)

致电CreateURLMoniker()获取IMoniker界面,通过Load()方法(以IStream界面作为输入)将HTML数据加载到其中,然后您可以使用浏览器的IPersistMoniker接口而不是其IPersistStreamInit接口来处理数据。您传递给CreateURLMoniker()的网址将用作基本网址。

答案 1 :(得分:2)

您可以使用Asynchronous Pluggable Protocol使用轻量级自定义协议处理程序,这将为文件提供回调。

我在http://www.jasontpenny.com/blog/2010/03/23/custom-protocol-handler-in-delphi/

上有一些演示代码