Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 13.09.2018, 11:21   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 480
Счастье 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
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

И? Что непонятного в нем?
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 11:43   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 480
Счастье

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

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

Проверку контекста на нулл можно убрать, вряд ли он будет нулл, а если и будет, то вряд ли вам надо просто завершать работу. Ну и для удобства такие вещи лучше проверять как в самом начале сделано без лишних else.

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

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

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

А это не пример что ли?
Цитата:
Код:
        context.Eval('window.pageYOffset', val, excp);
        scroll.y := val.GetIntValue;
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 12:47   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 480
Счастье

Вот так что ли?:
Код:
  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
Сообщений: 480
По умолчанию

Цитата:
Сообщение от Женя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
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

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

New Tab - Google Chrome 2018-09-13 18.25.43.png
Alex11223 вне форума Ответить с цитированием
Старый 13.09.2018, 18:58   #10
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 480
По умолчанию

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 18:01
Данный выводятся на странице без обновления страницы darewangog JavaScript, Ajax 2 01.12.2010 12:53


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS