пятница, 22 января 2016 г.

Delphi TWebBrowser выполнение JavaScript

в посте описано как в компоненте TWebBrowser выполнить скрипт JavaScript.Для выполнения скрипта потребуются подключить модули MSHTML_TLB, SHDocVw. Модуль SHDocVw идет в комплексе Delphi, а вот модуль MSHTML_TLB нужно экспортировать с Microsoft HTML Object Library. Модуль MSHTML_TLB нужен для определения интерфейса IHTMLDocument2 и выполнения скриптов.
Для получения файла модуля выполним следующие действия:

  • В Delphi открываем Component -> Import ActiveX Control...
  • В появившемся окне выбираем Import ActiveX Control, нажимаем Next>>
  • В списке выбираем "Microsoft HTML Object Library", нажимаем Next>>
  • Указываем каталог куда положим модуль
  • Далее на своё усмотрение выбираем создать модуль, добавить его в проект или установить и нажимаем Finish.

Теперь у нас есть все необходимые модули и можно написать код для выполнения скрипта JavaScript.


К модулю где будет реализовываться функция подключаем в uses SHTML_TLB, SHDocVw.

И описываем процедуру.

procedure ExecuteScript(doc: IHTMLDocument2; script: string; language: string);
begin
  if doc <> nil then
  begin
    if doc.parentWindow <> nil then
      doc.parentWindow.ExecScript(script, Olevariant(language)) ; 
    end;
  end;

Пример использования данной процедуры.

var
  script : string;
begin
  //Данный скрипт найдет первый элемент с ID равной = "main" и покажет его тэги;
  script := 'var elemMain = document.getElementById("main"); '+
            'if (elemMain != null) { alert(elemMain.tagName) ; }';
  ExecuteScript(EmbeddedWB1.Document as IHTMLDocument2, script, 'javascript');
end;

1 комментарий: