Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизВопрос по WB:IWebBrowser2 помогите как-нибудь решить проблему Найти похожие ветки
← →
Wadimka (2012-06-28 08:35) [0]Вопрос по 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-28 09:44) [1]Создаешь еще один веббровзер, в первом в событии onnewwindow пишешь ppDisp := newbowser.DefaultDispatch; (это откроет новый юрл в твоем новом браузере)
а в newbowser в onbeforenavigate wb.navigate(url); cancel:=true; ну как-то так поробуй, счас еще подойдут люди подскажут.
← →
sniknik © (2012-06-28 10:28) [2]> в onbeforenavigate wb.navigate(url); cancel:=true;
что то мне подсказывает, что "новое" окно это не начало навигации в "старом".
> 1. Или в открытом сайте программно менять все ссылки удаляя у них команду tagret="blank"
имхо, проще всего. хотя можно еще наследника написать/"интерфейсы перекрыть", и в них блокировать старт окна.
или переопределить - SetUIHandler, хотя... вот что нашел в своем старом проекте, т.что думай сам
//var
// DocHostUIHandler: TDocHostUIHandler; //из-за этого не работает (криво, давая ошибки) сохранение страницы... а функция полезная. придестя извращаться
//ошибка "Попытка отменить конечное место переноса, которое не было зарегистрировано"
//описана проблема тут http://support.microsoft.com/kb/330441/ru ... "это ограничение конструктора в Internet Explorer".
//предлагаемое решение "Не вызывайте метод SetUIHandler Если важно полное сохранение диалогового окна."
← →
sniknik © (2012-06-28 10:35) [3]во тут еще даже тема не "ушла" когда и зачем этим занимался - http://delphimaster.net/view/6-1323156396/
← →
Den (2012-06-28 10:40) [4]что то мне подсказывает, что "новое" окно это не начало навигации в "старом".
не недо в старом, в новом надо, в старом только заставить открываться новый линк в новом:)
← →
sniknik © (2012-06-28 11:24) [5]> в старом только заставить открываться новый линк в новом:)
заставлять не надо... в том то и дело (проблема, насколько понял), оно откроется независимо и не предупреждая тебя.
т.е. событий позволяющих что то изменить нет. с другой стороны если нажатие "программное" то его можно сделать, тогда непонятно в чем проблема (как всегда с мутными "описательными" вопросами с куском вообще не связанного с вопросом "кода"). т.к. логика действия в котором проблема не описана, кода действия не приведено.
← →
Den (2012-06-28 12:16) [6]часто натыкаешься на сайты, где нажав на ссылку открывается новое окно (вкладка), соответственно доступ уже к нему теряется
если нажал на ссылку и возникает onnewwindow в него вписывается ppDisp := newbowser.DefaultDispatch; редирект на открытие в новом браузере, который нужно предварительно создать. в нем же (в новом браузере) по событию onbeforenavigate пытающийся загрузиться в него сайт (в новый браузер) перенаправляется на старый браузер, а навигация отменяется. короче не знаю как еще обьяснить но оно работает.
← →
Wadimka (2012-06-28 17:10) [7]Спасибо ребят, потом попробую, пока еще как написал пост сделал чисто на скорую руку.
link.item(i).outerHtml:=StringReplace(link.item(i).outerHtml, "target="_blank"", "", [rfReplaceAll, rfIgnoreCase]);
Соответственно по всем найденным ссылкам, все пашет, хотя нужно будет сделать как Вы мне подсказали, моя фишка не сработает если ссылка будет из javascipt открывацо.
Просто срочно нужно было работать и на скорую руку варганил.
всех благодарю за помощь
← →
sniknik © (2012-06-28 19:44) [8]> и возникает onnewwindow
не возникает, в том то и дело... просто браузер "раздупливается" да и все.
> моя фишка не сработает если ссылка будет из javascipt открывацо.
вот вот, как раз тот вариант. никаких событий. (еще раз, если не перекрыть UI) было тоже самое.
← →
Den (2012-06-28 20:30) [9]А ну тода сори:(
← →
Wadimka (2012-06-28 22:53) [10]>Den
Ну вообще я за твое решение вопроса
← →
Den (2012-06-28 23:11) [11]Ну ты отпишись че там с скриптами этими если че. Ну работает, не.
← →
Wadimka (2012-06-28 23:13) [12]ок, не раньше, чем дня через 3-4
← →
Wadimka (2012-06-28 23:20) [13]Den а лучше на мыло аську пришли, бо могу забыть тему отписаться
← →
Den (2012-06-29 18:34) [14]Ну забудешь и ладно яж так ради интереса мне не горит.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.07 c