Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/65: Рейтинг темы: голосов - 65, средняя оценка - 4.86
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272

Chromium Embedded, проверка на окончание загрузки страницы

04.08.2013, 00:09. Показов 12841. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в chromium сделать проверку на окончание загрузки страницы?
Знаю что в стандартном браузере это делается так
if f1.WebBrowser1.ReadyState<READYSTATE_COM PLETE then ждать else продолжать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2013, 00:09
Ответы с готовыми решениями:

Окончание загрузки страницы webbrowser
Здравствуйте! Второй день бьюсь с проблемой. Чтение форумов не помогают, поэтому решил спросить. В Webbrowser загружается страница. На...

WebBroweser и окончание загрузки страницы
Подскажите как организовать выполнение некоторых действий только после загрузки страницы в контроле WebBroweser. т.е. Нужно дождаца...

Awesomium окончание загрузки страницы
Привет. Использую Awesomium, в котором в автоматическом режиме переходит по разным URL. Как только страница загружается, выполняются...

15
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
04.08.2013, 11:48
События должны быть.
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
09.08.2013, 21:30  [ТС]
Цитата Сообщение от саша40 Посмотреть сообщение
События должны быть.
не понял, какие события?

Добавлено через 4 минуты
саша40, может быть ты не понял вопрос?
Например я делаю переход на страницу:
form1.chromium1.load('https://www.cyberforum.ru/');
теперь мне надо выполнять следующие действия но только после того как страница https://www.cyberforum.ru/ в хромиуме загрузится полностью
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
10.08.2013, 11:04
Цитата Сообщение от Милт Посмотреть сообщение
какие события?
OnLoadEnd, например. Когда наступает это событие - значит, страничка загружена полностью:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
  //
  if (frame <> nil) and frame.IsMain then
  begin
    // либо взводишь какой-то флажок, а там, где вызывал Chromium1.Load
    // дожидаешься в цикле, пока флажок будет взведен, либо делаешь то, что необходимо прямо здесь,
    // либо вызываешь какой-то метод, который будет делать то, что нужно
  end;
end;
1
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
20.08.2013, 22:06  [ТС]
Спасибо за прошлый ответ. Есть ещё вопрос по поводу этого браузера. Как получить код той страницы которая в него загружена в данный момент?
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
22.08.2013, 14:54  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
OnLoadEnd, например. Когда наступает это событие - значит, страничка загружена полностью:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
  //
  if (frame <> nil) and frame.IsMain then
  begin
    // либо взводишь какой-то флажок, а там, где вызывал Chromium1.Load
    // дожидаешься в цикле, пока флажок будет взведен, либо делаешь то, что необходимо прямо здесь,
    // либо вызываешь какой-то метод, который будет делать то, что нужно
  end;
end;
У меня опять с этим проблема. Я сейчас решил это применить. Когда создаю событие

procedure TF1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);

Делфи выдаёт что не знает ICefBrowser и ICefFrame. почему так?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
22.08.2013, 15:06
Если в Uses подключен модуль CefLib, то все должно распознаваться.
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
22.08.2013, 16:02  [ТС]
А знаешь способ как сделать чтобы не загружать страницу с сервера дважды? например если делать так

Delphi
1
2
 Chromium1.Load('https://www.cyberforum.ru/');
 Memo2.Text:= IdHTTP1.Get('https://www.cyberforum.ru/');
На сколько я понимаю это получается что я дважды запрашиваю страницу с сервера. То есть надо либо узнавать код страницы который загружен в хромиуме либо сначала узнавать её код, а патом отображать его в браузер прямо из мемо
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
22.08.2013, 16:27
Цитата Сообщение от Милт Посмотреть сообщение
То есть надо либо узнавать код страницы который загружен в хромиуме
Что же тебя останавливает? В том же OnLoadEnd:

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
  //
  if (frame <> nil) and frame.IsMain then
  begin
    Memo1.Lines.Text := frame.Source;
    isLoaded := True; // Признак окончания загрузки страницы
  end;
end;
1
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
22.08.2013, 16:56  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Что же тебя останавливает? В том же OnLoadEnd:

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
  //
  if (frame <> nil) and frame.IsMain then
  begin
    Memo1.Lines.Text := frame.Source;
    isLoaded := True; // Признак окончания загрузки страницы
  end;
end;
Дело в том что я не знаком с Chromium и в интернете мало информации про него, в основном на английском.

В том коде который выше делфи выдаёт ошибку
[dcc32 Error] Brt2.pas(2253): E2003 Undeclared identifier: 'Source'
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
22.08.2013, 17:53
Цитата Сообщение от Милт Посмотреть сообщение
В том коде который выше делфи выдаёт ошибку
Правда?

Где именно?

Если код выложен (по крайней мере, это относится к моим постам) - значит, он скопирован из работающего тестового приложения. Я "с потолка" без проверки ничего никогда не выкладываю. У тебя либо что-то с ceflib, либо с самой Дельфи, возможно, где-то пути не прописаны, или еще что...
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
22.08.2013, 18:34  [ТС]
вот, как раз вот тут:
Delphi
1
Memo2.Lines.Text := frame.Source;
Слово Source подчёркнуто красной волнистой линией
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
16.09.2014, 04:19  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
OnLoadEnd, например. Когда наступает это событие - значит, страничка загружена полностью:


procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
* const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
* //
* if (frame <> nil) and frame.IsMain then
* begin
* * // либо взводишь какой-то флажок, а там, где вызывал Chromium1.Load
* * // дожидаешься в цикле, пока флажок будет взведен, либо делаешь то, что необходимо прямо здесь,
* * // либо вызываешь какой-то метод, который будет делать то, что нужно
* end;
end;
На сайте "вконтакте" частенько бывает такое что LoadEnd не происходит. Первый переход на страницу нормальный, а потом начинает выполнятся только LoadStart без LoadEnd
Что тут можно придумать?
0
 Аватар для Милт
4 / 54 / 6
Регистрация: 20.05.2013
Сообщений: 272
04.04.2015, 19:55  [ТС]
volvo, разобрался спс. Подскажи теперь, как сохранить куки?
0
 Аватар для 4E4EN
0 / 0 / 2
Регистрация: 13.09.2014
Сообщений: 70
10.08.2015, 23:15
Вот почитай тут http://parsing-and-i.blogspot.... =Tchromium

Добавлено через 3 минуты
А ещё на разных версиях dcef3 Cookie работают по разному, вот пример который работает у меня
Delphi
1
2
3
4
5
6
7
var CookieManager: ICefCookieManager;
     CookiesPath : String; 
begin
 CookiesPath := ExtractFilePath(Application.ExeName) + 'Cookie\User1'; 
CookieManager := TCefCookieManagerRef.GetGlobalManager;
 CookieManager.SetStoragePath(CookiesPath);
 Chromium1.Load('сайт');
0
2 / 2 / 0
Регистрация: 24.11.2010
Сообщений: 9
19.08.2015, 14:20
Chromium1LoadEnd

if httpStatusCode = 200 then // страница загружена !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2015, 14:20
Помогаю со студенческими работами здесь

Определить окончание загрузки веб-страницы
Здравствуйте, программисты киберфорума! Возникла у меня проблема, которую костыльно решить несложно, а нормально — я пока не...

Chromium Embedded
Нужно получить исходный код страницы. Раньше получал так: Memo1.Text:=Chromium1.Browser.MainFrame.Source; Теперь выбивает...

Chromium Embedded Delphi XE 2
Ставлю код на кнопку: if pos(Edit1.Text,Chromium1.Browser.MainFrame.Source) &lt;&gt; 0 then ShowMessage('Вижу:)') else ...

Chromium Embedded Delphi XE 2 Proxy
Как прикрутить прокси к Chromium Embedded ? Хотелось бы прикрутить их, не трогая при этом системные настройки.

Chromium Embedded (dcef) DelphiInterface
Всем привет! Поставил в XE5 на замену стандартному CppWebBrowser сиё чудо инженерной мысли. На пагу заходит, всё вроде работает. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru