Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Работа с TWebBrowser в Delphi: извлечение HTML-кода из iframe

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Вопрос пользователя заключается в том, как извлечь HTML-код из iframe, который используется в качестве редактора обогащенного текста, загруженного в компонент TWebBrowser в Delphi. Решение проблемы состоит в получении доступа к внутреннему документу iframe, что позволяет извлечь HTML-код.

Шаг 1: Получение элемента iframe

Для начала, необходимо получить сам элемент iframe. Это можно сделать с помощью метода getElementById, используя идентификатор iframe:

NodeName := 'htmleditor_ifr';
BodyIframe := (WebBrowser1.Document as IHTMLDocument3).getElementById(NodeName);

Шаг 2: Получение внутреннего документа iframe

Далее, необходимо получить доступ к внутреннему документу iframe. В более новых версиях Delphi это можно сделать, приведя элемент iframe к интерфейсу IHTMLIFrameElement3 и используя свойство contentDocument:

ContentHTML := ((BodyIframe as IHTMLIFrameElement3).contentDocument) as IHTMLDocument2;

Шаг 3: Извлечение HTML-кода

После получения внутреннего документа, можно извлечь HTML-код, обратившись к свойству innerHTML элемента body:

Body := ContentHTML.body.innerHTML;

Решение для Delphi 7

В старых версиях Delphi, например, в Delphi 7, интерфейс IHTMLIFrameElement3 отсутствует. В таком случае, можно использовать следующий подход:

  1. Импортировать определения интерфейса с помощью меню "Component" > "Import ActiveX Control".
  2. Получить элемент iframe как описано выше.
  3. Привести элемент iframe к интерфейсу IUnknown и использовать late binding для доступа к свойству contentWindow.
  4. Получить внутренний документ iframe через свойство contentWindow.
  5. Извлечь HTML-код, обратившись к свойству innerHTML элемента body.

Пример кода для Delphi 7

NodeName := 'htmleditor_ifr';
var
  BodyIframe: IUnknown;
  ContentWindow, ContentHTML: IUnknown;
begin
  BodyIframe := (WebBrowser1.Document as IHTMLDocument3).getElementById(NodeName);
  if Supports(BodyIframe, IID_IUnknown) then
  begin
    ContentWindow := BodyIframe as IUnknown;
    if ContentWindow.GetInterface(IID_IDispatch, ContentWindow) then
    begin
      var VariantContentWindow := ContentWindow as Variant;
      ContentHTML := VariantContentWindow.contentWindow;
      if Supports(ContentHTML, IID_IDispatch) then
      begin
        ContentHTML := IUnknown(ContentHTML).QueryInterface(IID_IHTMLDocument2);
        Body := ContentHTML.body.innerHTML;
      end;
    end;
  end;
end;

Таким образом, пользователь может извлечь HTML-код из iframe, используя компонент TWebBrowser в Delphi, даже в старых версиях этой среды разработки.

Создано по материалам из источника по ссылке.

Вопрос касается извлечения HTML-кода из iframe, используемого в качестве редактора в компоненте TWebBrowser в Delphi, с учетом особенностей различных версий Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 15:55:33/0.0052261352539062/1