Delphi WebBrowser、IPersistStreamInit和javascript

Delphi WebBrowser、IPersistStreamInit和javascript,delphi,winapi,webbrowser-control,Delphi,Winapi,Webbrowser Control,对于我们的一个桌面应用程序,我们使用基于HTML的界面,从本地文件加载到WebBrowser控件中 这很好,但现在我们希望从不同的源加载文件,并尝试使用IPersistStreamInit(如上的示例)对其进行流式处理。除了被引用的javascript.js文件(JQuery等),它似乎工作正常。它试图从“about:”位置加载这些内容,从而导致错误 我真正想做的是在流传输其他文件时获得回调事件,并替换正确的数据。这可能要求有点太高了,所以建议解决办法是受欢迎的 您可以使用一个轻量级的自定义协议

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

这很好,但现在我们希望从不同的源加载文件,并尝试使用IPersistStreamInit(如上的示例)对其进行流式处理。除了被引用的javascript.js文件(JQuery等),它似乎工作正常。它试图从“about:”位置加载这些内容,从而导致错误


我真正想做的是在流传输其他文件时获得回调事件,并替换正确的数据。这可能要求有点太高了,所以建议解决办法是受欢迎的

您可以使用一个轻量级的自定义协议处理程序,它将为文件提供回调


我在调用
CreateURLMoniker()
时有一些演示代码,要获得
IMoniker
接口,请通过其
load()
方法将HTML数据加载到该接口中(该方法将
IStream
接口作为输入),然后,您可以使用浏览器的
IPersistMoniker
接口而不是其
IPersistStreamInit
接口来处理数据。传递给
CreateURLMoniker()
的URL将用作基本URL。

我现在创建了一个自定义IMoniker实现,它在BindToStorage()方法中加载我自己的数据。现在,使用IPersistMoniker可以加载我的内容,TWebBrowser可以在GetDisplayName()URL中查找其他文件(javascript、图像等)。这很好,但还不能完全解决我的问题:我需要自己提供这些额外文件的数据。不确定如何继续。