![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по 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; ну как-то так поробуй, счас еще подойдут люди подскажут.