Форум программистов, компьютерный форум, киберфорум
Alex_pac
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Delphi запуск JavaScript [jsWebBrowser 3]

Запись от Alex_pac размещена 18.07.2012 в 13:13
Показов 14193 Комментарии 1
Метки delphi, javascript

Модуль jsWebBrowser 3

http://jqbook.narod.ru/delphi/javascript.htm <<- официальная страница

Нажмите на изображение для увеличения
Название: jsEmbeded.png
Просмотров: 721
Размер:	46.3 Кб
ID:	946

Модуль позволяет легко и просто использовать JavaScript страницы через стандартный компонент TWebbrowser или TEmbededWB

Имеются функции для легкого обращения к DOM элементам страницы.

В модуле предусмотрены функции по управлению событиями элементов страницы на уровне программы.

Список типов

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
IHTMLElement = MSHTML.IHTMLElement;
  IHTMLelements = Array of IHTMLElement;
  IHTMLWindow2 = MSHTML.IHTMLWindow2;
  IHTMLElement2 = MSHTML.IHTMLElement2;
  IHTMLDocument2 = MSHTML.IHTMLDocument2;
  // короткие дубликаты типов
  Helem = MSHTML.IHTMLElement;
  Helems = Array of IHTMLElement;
  HWin = MSHTML.IHTMLWindow2;
  Helem2 = MSHTML.IHTMLElement2;
  Hdoc = MSHTML.IHTMLDocument2;
 
  TSimpleEvent = procedure of object;
Procedure TEmbeddedWB. JqueryLoad;

Процедура подключает Jquery 1.3 к любой странице.
Если уже подключен по ничего не делает.

Сам Jquery хранится в ресурсе Jquery.res

Инициализация ресурса производится автоматически. Ресурс лежит в глобальной переменной

Delphi
1
var  Jquery: TStringStream;
Procedure TEmbeddedWB. RunJS ( js:string );

Js – текст скрипта

запуск JS скрипта любого содержания, за исключением объявления функций.

они все равно будут видны только внутри этого кода, то есть неглобальны

JS разумеется, относится, и выполняет все действия на странице, которая сейчас открыта в этом TEmbeddedWB

Function TEmbeddedWB. GetJsParam ( param:string ):string;

param – выражение JS которое должно чтото вернуть в качестве строкового, логического или числового значения.

функция возращает значение JS выражения

Delphi
1
2
3
4
var str: string;
str := WEBrowser.GetJsParam('2+2'); // '4'
str := WEBrowser.GetJsParam('document.form[0].mypole.value'); // 'значение поля'
str := WEBrowser.GetJsParam('par'); // значение переменной par внутри JS
procedure TEmbeddedWB. getJsStrings( param:string; strings: TStrings );

param – выражение JS которое должно чтото вернуть в качестве одномерного массива.
процедура возвращает значение JS одномерного массива в ввиде строкового листа

Delphi
1
2
3
4
5
6
7
8
var strL: TStringList;
strL:= TStringList.Create;
WEBrowser.RunJS('var massiv = [1,4,8,34];'); // объявление массива внутри JS
WEBrowser.getJsStrings('massiv',strL); // получение значения массива
ShowMessage(strL.text);
strL.free; // после использования не забываем очищать строковый лист
// содержимое strL  - несколько строк со значениями 1,4,8,34
end;

procedure TEmbeddedWB. getElementsByClassName
(tag,classname: string; var elements: Helems; attr: string = ''; value: string = '');


Записывает в elements все элементы удоволетворяющие следующим условиям

tag = название тега
classname = принадлежность к классу
attr = название аттрибута
value = значение аттрибута

если attr = '' то фильтрация по attr игнорируется.


procedure TEmbeddedWB. getElementsByTagName
(tag:string; var elements: Helems; attr: string = ''; value: string = '');


Записывает в elements все элементы удоволетворяющие следующим условиям

tag = название тега
attr = название аттрибута
value = значение аттрибута

если attr = '' то фильтрация по attr игнорируется.


function TEmbeddedWB.getElementByTagName
(tag:string; attr: string = ''; value: string = ''):Helem;


Ищет элемент удоволетворяющий условиям

tag = название тега
attr = название аттрибута
value = значение аттрибута

если attr = '' то фильтрация по attr игнорируется.

Если элемент не найден вызывается Exception и сообщение об ошибке что элемент не найден


function TEmbeddedWB.getElementByClassName
(tag,classname: string; attr: string = ''; value: string = ''):Helem;


Ищет элемент удоволетворяющий условиям

tag = название тега
classname = название класса
attr = название аттрибута
value = значение аттрибута

если attr = '' то фильтрация по attr игнорируется.

Если элемент не найден вызывается Exception и сообщение об ошибке что элемент не найден

Function TEmbeddedWB. getElementById(tag,id:string):Helem;

Возвращает элемент-объект IHTMLelement(Helem) по id и тегу

tag – название тега для поиска
id – идентификатор элемента страницы

Если элемент не найден вызывается Exception и сообщение об ошибке что элемент не найден

function getBody: Helem2;

Возвращает объект IHTMLElement2(Helem2) соответсвующий Body страницы.

Function TEmbeddedWB. getDocument:Hdoc;

Возвращает объект IHTMLDocument2(Hdoc) соответсвующий Document страницы.

Delphi
1
2
// показать исходный код
memo1.Text:=WebBrowser1.getDocument.body.innerHTML;
Управление событиями

В модуле предусмотрены 2 процедуры. Обеспечиващие установку событий на элементы страницы, которые будут запускать события в программе.

function CreateHTMLEvent(

const Elem: Helem;
const OnEvent: TSimpleEvent

):IDispatch;


Функция проводит установку события на элемент страницы.

elem - IHTMLElement(Helem) элемент страницы
OnEvent - TSimpleEvent (procedure of Object);

Синтаксис:

Delphi
1
2
3
4
5
6
7
procedure TForm1.Button13Click(Sender: TObject);
var el:Helem;
begin
  // Delphi кнопка 3
  el:=WebBrowser1.getElementById('button','delphi_button');
  el.onclick:=CreateHTMLEvent(el, Delphi_button);
end;
в данном случаем событие Delphi_button имеет вид:

Delphi
1
2
3
4
5
procedure TForm1.Delphi_button;
begin
  ShowMessage('Кнопка 3 нажата (Событие Delphi)'+#13+'Цвет формы будет изменен');
  self.Color:=random(16777215);
end;
function DestroyHtmlEvent(const Elem: Helem):IDispatch;

Функция проводит очистку события на элементе страницы.

elem - IHTMLElement(Helem) элемент страницы

Delphi
1
2
3
4
5
6
7
procedure TForm1.Button13Click(Sender: TObject);
var el:Helem;
begin
  // Delphi кнопка 3 удалить событие
  el:=WebBrowser1.getElementById('button','delphi_button');
  el.onclick:=DestroyHtmlEvent(el);
end;
Метки delphi, javascript
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий

    Файлы

    Не могу найти по ссылке jswebbrowser.pas и его ресурс jquery.res

    Покажите, где, или дайте ссылку
    Запись от grigandal1580 размещена 13.12.2016 в 18:04 grigandal1580 вне форума
 
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru