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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2018, 22:34   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Chromium, если страница открывается в новом окне, как обратиться к этому окну?

Здравствуйте!
Chromium при нажатии на ссылку, страница открывается в новом окне, подскажите пожалуйста, как программно обратиться к этому окну?
Женя32 вне форума Ответить с цитированием
Старый 10.09.2018, 07:59   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

по заголовку окна (если он каждый раз одинаковый - там кода на 15 строк) или по хэндлу - создаёшь список тех, что уже открыты и каждую секунду смотришь, не появилось ли новое окошко.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 10.09.2018, 08:07   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Он не настолько садомазохист, чтобы управлять обычным Хромом. Конечно он все равно выбрал не самый удобный вариант для автоматизации браузеров (Selenium), но все-таки хоть TChromium.
...в котором наверняка есть событие открытия нового окна.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2018, 09:41   #4
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Нашел в интернете способ "запрета" открытия страницы в новом окне, но почему-то вообще перестало реагировать...
Код:
procedure TForm2.Chromium1BeforePopup(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
  targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition;
  userGesture: Boolean; var popupFeatures: TCefPopupFeatures;
  var windowInfo: TCefWindowInfo; var client: ICefClient;
  var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean;
  out Result: Boolean);
  var
     url: String;
begin
result:=true;
Chromium1.Load(url);
end;
А вот это что за событие?: OnRunModal
Если есть событие открытия нового окна, то как оно называется?
Женя32 вне форума Ответить с цитированием
Старый 10.09.2018, 09:48   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
почему-то
в таких случаях надо начинать с добавления логирования/отладочной печати.
Цитата:
Сообщение от Женя32 Посмотреть сообщение
Если есть событие открытия нового окна, то как оно называется?
так это оно и есть, сами ж сказали, что перестало открываться.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2018, 10:32   #6
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
...

так это оно и есть, сами ж сказали, что перестало открываться.
Нет, перестало открываться тогда, когда код прописал в BeforePopup, а вот с OnRunModal не понятно, когда оно срабатывает...
Так ничего не происходит:
Код:
procedure TForm2.Chromium1RunModal(Sender: TObject; const browser: ICefBrowser;
  out Result: Boolean);
begin
ShowMessage('Сработало!');
end;
Женя32 вне форума Ответить с цитированием
Старый 10.09.2018, 10:39   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут это? Очевидно, что если событие срабатывает во время открытия нового окна (срабатывает же?), да еще и можно из него запретить открытие нового окна, то это и есть событие открытия нового окна.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2018, 11:25   #8
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
...да еще и можно из него запретить открытие нового окна, то это и есть событие открытия нового окна.
Передать в это, создаваемое, окно что нибудь можно? Например, вставить в input текст?
Женя32 вне форума Ответить с цитированием
Старый 10.09.2018, 11:29   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык посмотрите что передается в событие, добавьте отладочный вывод и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2018, 15:48   #10
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Может кому-то пригодиться..
Сделал так:
Код:
result:=true;
   if (sender as tchromium).Name = 'Chromium1' then
     begin
         Chromium1.Load(targeturl);
     end
Сейчас страница загружается не в отдельном окне, а в том, где кликнули по ссылки... А там уже можно что нужно, то и отправлять на страницу.
Женя32 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TChromium как запретить открытие в новом окне Deman75 Компоненты Delphi 2 02.10.2014 00:12
Как отследить событие при открытии в новом окне? magnuz JavaScript, Ajax 1 25.04.2014 12:15
Не открывается ссылка в новом окне tol64 HTML и CSS 3 20.07.2013 07:47
Как обратиться к текстовому окну caveman Общие вопросы Delphi 0 27.09.2009 14:35
Как заставить IE открывать в новых вкладках а не в новом окне? Stilet Софт 4 08.09.2009 22:02