Вопрос, заданный пользователем, касается возможности обработки загрузки ресурсов в компоненте TWebBrowser в среде разработки Delphi, аналогично событию OnResourceResponse из Chromium Embedded Framework. Пользователь пытается отследить загрузку изображений, используя локальные ресурсы в формате Res://, но стандартные методы, такие как перебор элементов HTML документа после его полной загрузки, оказались неэффективными.
Проблема
Пользователь ищет способ отслеживания загрузки ресурсов, в частности изображений, в компоненте TWebBrowser, аналогично тому, как это делается с помощью события OnResourceResponse в Chromium Embedded. В настоящее время он использует функцию OnDocumentComplete, которая сканирует весь HTML-документ после его создания, что является неэффективным процессом.
procedure TNotesBrowser.TBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
HTMLDocument2: IHTMLDocument2;
i: Integer;
Item: IHTMLElement;
ImageUrl: string;
begin
HTMLDocument2 := ((FBrowser as TWebBrowser).Document as IHTMLDocument2);
if HTMLDocument2 <> nil then
begin
for i := 0 to HTMLDocument2.images.length - 1 do
begin
Item := HTMLDocument2.images.item(i, 'null') as IHTMLElement;
ImageUrl := Item.getAttribute('src', 0);
if ContainsText(ImageURL, 'ImageName') then
if Assigned(FCCICONLoaded) then
FCCICONLoaded(self);
end;
end;
end;
Решение
После исследования проблемы было найдено решение, использующее асинхронный подключаемый протокол. Однако, это решение работает только для одноформатных приложений, где TWebBrowser встроен непосредственно в форму. Источник кода для реализации этого решения доступен по ссылке.
Если ваше приложение отличается от описанного и у вас есть проблемы с использованием асинхронного подключаемого протокола, рекомендуется обратиться к дополнительному вопросу на Stack Overflow, который рассматривает проблему нахождения COM-сервера для асинхронного подключаемого протокола TWebBrowser.
Заключение
Для эффективной обработки загрузки ресурсов в TWebBrowser можно использовать асинхронный подключаемый протокол, но для его работы необходимо учитывать специфику интеграции TWebBrowser в вашем приложении. Дополнительные сведения и решение проблемы, если она связана с интеграцией протокола, можно найти в специализированных источниках и сообществах разработчиков.
Эта статья предназначена для специалистов, работающих с компонентом TWebBrowser в среде Delphi, и может служить полезным руководством для тех, кто сталкивается с аналогичными задачами в области обработки ресурсов в веб-браузерах.
Пользователь ищет способ отследить загрузку ресурсов, особенно изображений, в компоненте `TWebBrowser` в Delphi, аналогично событию `OnResourceResponse` из Chromium Embedded, и рассматривает различные подходы, включая использование фу
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.