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

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

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

Ответ
 
Опции темы
Старый 13.09.2018, 12:21   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 378
Репутация: 15
Счастье 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, 12:32   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,387
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

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

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И? Что непонятного в нем?
Как, следуя этому примеру, получить содержимое элемента страницы, или значение параметра атрибута элемента?:
Код:

   if (context <> nil) then
    begin
       ....
    end

Женя32 вне форума   Ответить с цитированием
Старый 13.09.2018, 12:48   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,387
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

А это не пример что ли?
Цитата:
Код:

        context.Eval('window.pageYOffset', val, excp);
        scroll.y := val.GetIntValue;

Alex11223 на форуме   Ответить с цитированием
Старый 13.09.2018, 13:47   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 378
Репутация: 15
Счастье

Вот так что ли?:
Код:

  context.Eval('var a = 5;'+
                     'var b = 5;'+
                     'var c = a + b;', val, excp);
                rezToDelphi := val.GetIntValue;

Женя32 вне форума   Ответить с цитированием
Старый 13.09.2018, 19:06   #8
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 378
Репутация: 15
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


19:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru