Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по WB:IWebBrowser2 помогите как-нибудь решить проблему


Wadimka ©   (2012-06-28 08:35:00) 

Вопрос по WB:IWebBrowser2 помогите как-нибудь решить проблему, собственно создаю объект
                         WB:=CoInternetExplorer.Create;
                         WB.Visible:=True;
                         WB.Navigate(' http://google.com', ''),
                               EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Ну вообщем работает нормально, НО этот IE открывается в Visible mode
Я там ищу нужные мне сайты ну и моя программа потом выполняет нужные мне действия.
Но столкнулся с такой проблемой, часто натыкаешься на сайты, где нажав на ссылку открывается новое окно (вкладка), соответственно доступ уже к нему теряется.
Какие есть варианты, чтобы все равно открывалось по нажатию на ссылку в текущем окне, чтобы моя программа могла дальше работать?
В настроках в IE такого нет, есть только наоборот.
Пока придумал так:
1. Или в открытом сайте программно менять все ссылки удаляя у них команду tagret='blank'
2. предлагать мне самому выбрать нужный хендл и дальше работать уже с этим нендлом (менее этот вариант мне нравиться)

Кто, что подскажет?


Den   (2012-06-29 18:34:00) [1]

Ну забудешь и ладно яж так ради интереса мне не горит.


Wadimka   (2012-06-28 23:20:00) [2]

Den а лучше на мыло аську пришли, бо могу забыть тему отписаться


Wadimka   (2012-06-28 23:13:00) [3]

ок, не раньше, чем дня через 3-4


Den   (2012-06-28 23:11:00) [4]

Ну ты отпишись че там с скриптами этими если че. Ну работает, не.


Wadimka   (2012-06-28 22:53:00) [5]

>Den
Ну вообще я за твое решение вопроса


Den   (2012-06-28 20:30:00) [6]

А ну тода сори:(


sniknik   (2012-06-28 19:44:00) [7]

> и возникает  onnewwindow
не возникает, в том то и дело...  просто браузер "раздупливается" да и все.

> моя фишка не сработает если ссылка будет из javascipt открывацо.
вот вот, как раз тот вариант. никаких событий. (еще раз, если не перекрыть UI) было тоже самое.


Wadimka   (2012-06-28 17:10:00) [8]

Спасибо ребят, потом попробую, пока еще как написал пост сделал чисто на скорую руку.

link.item(i).outerHtml:=StringReplace(link.item(i).outerHtml, 'target="_blank"', '', [rfReplaceAll, rfIgnoreCase]);
Соответственно по всем найденным ссылкам, все пашет, хотя нужно будет сделать как Вы мне подсказали, моя фишка не сработает если ссылка будет из javascipt открывацо.

Просто срочно нужно было работать и на скорую руку варганил.
всех благодарю за помощь


Den   (2012-06-28 12:16:00) [9]

часто натыкаешься на сайты, где нажав на ссылку открывается новое окно (вкладка), соответственно доступ уже к нему теряется

если нажал на ссылку и возникает  onnewwindow в него вписывается ppDisp := newbowser.DefaultDispatch; редирект на открытие в новом браузере, который нужно предварительно создать. в нем же (в новом браузере) по событию onbeforenavigate пытающийся загрузиться в него сайт (в новый браузер) перенаправляется на старый браузер, а навигация отменяется. короче не знаю как еще обьяснить но оно работает.


sniknik   (2012-06-28 11:24:00) [10]

> в старом только заставить открываться новый линк в новом:)
заставлять не надо... в том то и дело (проблема, насколько понял), оно откроется независимо и не предупреждая тебя.

т.е. событий позволяющих что то изменить нет. с другой стороны если нажатие "программное" то его можно сделать, тогда непонятно в чем проблема (как всегда с мутными "описательными" вопросами с куском вообще не связанного с вопросом "кода"). т.к. логика действия в котором проблема не описана, кода действия не приведено.


Den   (2012-06-28 10:40:00) [11]

что то мне подсказывает, что "новое" окно это не начало навигации в "старом".

не недо в старом, в новом надо, в старом только заставить открываться новый линк в новом:)


sniknik   (2012-06-28 10:35:00) [12]

во тут еще даже тема не "ушла" когда и зачем этим занимался - http://www.delphimaster.ru/cgi-bin/forum.pl?id=1323156396&n=4


sniknik   (2012-06-28 10:28:00) [13]

> в onbeforenavigate wb.navigate(url); cancel:=true;
что то мне подсказывает, что "новое" окно это не начало навигации в "старом".

> 1. Или в открытом сайте программно менять все ссылки удаляя у них команду tagret='blank'
имхо, проще всего. хотя можно еще наследника написать/"интерфейсы перекрыть", и в них блокировать старт окна.
или переопределить - SetUIHandler, хотя... вот что нашел в своем старом проекте, т.что думай сам  
//var
// DocHostUIHandler: TDocHostUIHandler; //из-за этого не работает (криво, давая ошибки) сохранение страницы... а функция полезная. придестя извращаться
                                        //ошибка "Попытка отменить конечное место переноса, которое не было зарегистрировано"
                                        //описана проблема тут http://support.microsoft.com/kb/330441/ru... "это ограничение конструктора в Internet Explorer".
                                        //предлагаемое решение "Не вызывайте метод SetUIHandler Если важно полное сохранение диалогового окна."


Den   (2012-06-28 09:44:00) [14]

Создаешь еще один веббровзер, в первом в событии onnewwindow пишешь ppDisp := newbowser.DefaultDispatch; (это откроет новый юрл в твоем новом браузере)

а в newbowser в onbeforenavigate wb.navigate(url); cancel:=true;  ну как-то так поробуй, счас еще подойдут люди подскажут.


Наверх

Титульная страница Поиск, карта сайта Написать письмо