2010-08-09 60 views
4

對於我們的桌面應用程序之一,我們使用基於HTML的界面,從本地文件加載到WebBrowser控件中。WebBrowser,IPersistStreamInit和javascript

這工作正常,但現在我們想要從不同的來源加載文件,並試圖使用IPersistStreamInit(如MSDN上的此示例)對它們進行流式處理。除了引用的javascript .js文件(JQuery等)外,它似乎工作正常。它會嘗試從「about:」位置加載導致錯誤的位置。

我真的很喜歡的是,只要有其他文件流式傳輸,就會得到一個回調事件,並替換正確的數據。雖然這可能要求太多,所以建議解決方法是值得歡迎的!

回答

3

呼叫CreateURLMoniker()一些演示代碼,以獲得IMoniker接口,你的HTML數據加載到它通過其Load()方法(這需要一個IStream接口輸入),然後就可以使用瀏覽器接口而不是其IPersistStreamInit接口來處理數據。您傳遞給CreateURLMoniker()的URL將用作基本URL。

+1

我現在已經創建了一個自定義的IMoniker實現,它將我自己的數據加載到BindToStorage()方法中。使用IPersistMoniker現在我的內容被加載,並且TWebBrowser在GetDisplayName()URL處查找其他文件(javascript,圖像等)。這很好,但還不能完全解決我的問題:我需要自己提供這些附加文件的數據。不確定如何繼續。 – 2010-08-10 11:04:57