Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2018, 11:21   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Chromium. получение данных со страницы и результат работы js функций

Здравствуйте!
Подскажите пожалуйста, как получить данные со страницы, например, содержимое какого-то элемента DOM, или результат работы функций js?

Если я правильно понял, Во это код вычисляет позиции скролла:
Код:
var
    val: ICefV8Value;
    context: ICefv8Context;
    excp: ICefV8Exception;
    scroll: TPoint;
begin
    if (Chromium1.Browser.MainFrame = nil) then
      exit;

    //this will work only with exact frame
    context := Chromium1.Browser.MainFrame.GetV8Context;

    if (context <> nil) then
    begin
        context.Eval(;
        scroll.x := val.GetIntValue;
        context.Eval('window.pageYOffset', val, excp);
        scroll.y := val.GetIntValue;
    end
    else
      exit;

    //todo: do something with scroll here
end;
Женя32 вне форума Ответить с цитированием
Старый 13.09.2018, 11:32   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И? Что непонятного в нем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 11:43   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И? Что непонятного в нем?
Как, следуя этому примеру, получить содержимое элемента страницы, или значение параметра атрибута элемента?:
Код:
   if (context <> nil) then
    begin
       ....
    end
Женя32 вне форума Ответить с цитированием
Старый 13.09.2018, 11:48   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Выполнить в Eval нужный код (предварительно можно проверить в консоли обычного Хрома) и взять значение нужного типа в val.

Проверку контекста на нулл можно убрать, вряд ли он будет нулл, а если и будет, то вряд ли вам надо просто завершать работу. Ну и для удобства такие вещи лучше проверять как в самом начале сделано без лишних else.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 13.09.2018 в 11:52.
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 12:29   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Выполнить в Eval нужный код (предварительно можно проверить в консоли обычного Хрома) и взять значение нужного типа в val.

Проверку контекста на нулл можно убрать, вряд ли он будет нулл, а если и будет, то вряд ли вам надо просто завершать работу. Ну и для удобства такие вещи лучше проверять как в самом начале сделано без лишних else.
А можно примерчик? Просто я не могу представить как это может выглядеть, выполнение в Eval.
Женя32 вне форума Ответить с цитированием
Старый 13.09.2018, 12:31   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А это не пример что ли?
Цитата:
Код:
        context.Eval('window.pageYOffset', val, excp);
        scroll.y := val.GetIntValue;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 12:47   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Вот так что ли?:
Код:
  context.Eval('var a = 5;'+
                     'var b = 5;'+
                     'var c = a + b;', val, excp);
                rezToDelphi := val.GetIntValue;
Женя32 вне форума Ответить с цитированием
Старый 13.09.2018, 18:06   #8
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
context.Eval('var a = 5;'+
'var b = 5;'+
'var c = a + b;', val, excp);
rezToDelphi := val.GetIntValue;
Так не работает...... Но должен же быть способ диалога delphi <<--->> js
Женя32 вне форума Ответить с цитированием
Старый 13.09.2018, 18:27   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Так не работает
А что вы ожидали получить-то?

New Tab - Google Chrome 2018-09-13 18.25.43.png
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 18:58   #10
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А что вы ожидали получить-то?

Вложение 94176
Большое, большое спасибо!!!
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Chromium получить текст страницы grigandal1580 Компоненты Delphi 2 06.01.2017 15:17
Chromium загрузка страницы из ресурсов bafoped Общие вопросы Delphi 0 21.05.2016 20:01
Как получить текст HTML страницы с компонента Chromium браузер Skail Общие вопросы Delphi 6 04.12.2013 19:01
Данный выводятся на странице без обновления страницы darewangog JavaScript, Ajax 2 01.12.2010 12:53