WebBrowser, IPersistStreamInit и JavaScript - PullRequest
       3

WebBrowser, IPersistStreamInit и JavaScript

4 голосов
/ 09 августа 2010

Для одного из наших настольных приложений мы используем интерфейс на основе HTML, загруженный из локальных файлов в элемент управления WebBrowser.

Это работает нормально, но теперь мы хотим загрузить файлы из другого источника и пытаемся передать их с использованием IPersistStreamInit (как в этом примере на MSDN ).Кажется, он работает нормально, за исключением ссылочных файлов javascript .js (JQuery et al).Он пытается загрузить их из местоположения «about:», что приводит к ошибкам.

Что я действительно хотел бы, так это получить событие обратного вызова при потоковой передаче дополнительных файлов и заменить нужные данные.Это может потребовать слишком много, поэтому предложения по обходным путям приветствуются!

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Позвоните CreateURLMoniker(), чтобы получить интерфейс IMoniker, загрузите в него свои HTML-данные с помощью метода Load() (в качестве входного сигнала используется интерфейс IStream), а затем вы можете использовать интерфейс браузера IPersistMoniker. вместо интерфейса IPersistStreamInit для обработки данных. URL, который вы передаете CreateURLMoniker(), будет использоваться в качестве базового URL.

2 голосов
/ 10 августа 2010

Вы могли бы использовать легкий обработчик пользовательских протоколов, используя Асинхронный подключаемый протокол , который дал бы обратный вызов для файлов.

У меня есть некоторый демонстрационный код на http://www.jasontpenny.com/blog/2010/03/23/custom-protocol-handler-in-delphi/

...