![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
открыватьчужие ссылки в новом окне?
ivanov © (2008-05-19 11:53:00)есть страница, http://moj.com
на этой странице несколько ссылок, некоторые из них вида
http://moj.com/thread.html,
другие же вида http://drugoj.com/
для работы используется компонент TWEbbrowser
как сделать чтобы по клику на ссылке те, которые http://moj.comоткрывались в этом-же окне, а все другие чтобы в новом окне?
как сделать проверку строки - я знаю,:
if pos(' http://moj.com/', s) > 0 then
//открываем ссылку обычным путем
else
//открываем в новом окне. <-- как реализовать?
ivanov (2008-05-22 14:03:00) [41]так вы же сами написали в пост #12.
каким образом тогда отделять мух от котлет, если неизвестно какие адреса реклама, а какие не реклама?
получается это событие не подходит...
DVM (2008-05-22 13:31:00) [42]
> что конкретнo здесь не правильно?
Конкретно надо отделять мух от котлет в OnBeforeNavigate2. Это событие возникает чаще, чем ты думаешь, особенно на навороченных страницах с баннерами во фреймах и.т.д.
ivanov (2008-05-22 12:55:00) [43]
> Что написал, то и получил, чему ж тут удивляться)
???
что конкретнoздесь не правильно?
Сергей М. (2008-05-22 12:26:00) [44]
>
> вот пожалуста.
> куча рекламных окон.
>
Что написал, то и получил, чему ж тут удивляться)
ivanov (2008-05-22 12:12:00) [45]
procedure tform1.Button2Click(Sender: TObject);
var flags: OleVariant;
begin
flags := 0;
webbrowser1.Navigate(' http://mail.ru', flags);
end;
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var s, n: string;
p: pchar;
begin
s := 'mail.ru';
n := url;
p := pchar(n);
cancel := false;
if (pos(s, url) <= 0) then begin
shellexecute(handle, 'open', p, ' target=_blank', nil, sw_shownormal);
cancel := true;
end;
end;
вот пожалуста.
куча рекламных окон.
DVM (2008-05-22 11:20:00) [46]
> ivanov
Между прочим, при клике в TWebBrowser по ссылке, в теге которой указано "Открывать в новом окне" все прекрасно открывается в новом окне браузера. Если же ты хочешь ВСЕ ССЫЛКИ открывать в новом окне, то, очевидно, ShellExecute тебе в помощь.
> ivanov (21.05.08 17:48) [8]
>
> так, хочу код :)
> дело в том, что я пробовал через shellexcute, не работает
Может покажешь как ты пробовал? Или ты и не пробовал вовсе?
> и еще важно, на какое событие браузера это дело повесить?
OnBeforeNavigate2.
DVM (2008-05-22 11:05:00) [47]
> открыть ссылку в браузере по дефолту через shellexecute
> не выйдет, разве что сохранять ее как файл *.url, но это
> к "мастерству" никакого отношения не имеет, а также - изврат.
>
Все выйдет еще как. Ты не пробовал в командной строке набирать:
C:\Program Files\Internet Explorer>iexplore.exe www.google.ru ???
Попробуй, удивишься.
ivanov (2008-05-22 10:56:00) [48]итак,резюме:
открыть ссылку в браузере по дефолту через shellexecute не выйдет, разве что сохранять ее как файл *.url, но это к "мастерству" никакого отношения не имеет, а также - изврат.
создавать новый экземпляр формы с браузером - меня не устраивает такое решение.
к сожалению в который раз убедился, что "мастера" когда доходит до относительно сложных вопросов помочь ничем, кроме как напыщено заявлять "можно", "нельзя" не могут.
печально.
Сергей М. (2008-05-21 19:44:00) [49]
> хочу код
"Иванов на остановке, в ожиданьи кружки пива, в предкушеньи колесницы .." (С) БГ
Какой тебе еще код ?
Создавай новый экз-р TWEbbrowser и вызывай его метод Navigate
ivanov (2008-05-21 17:48:00) [50]так, хочу код :)
дело в том, что я пробовал через shellexcute, не работает
и еще важно, на какое событие браузера это дело повесить?
DVM (2008-05-21 16:48:00) [51]
> а как именно?
ShellExecute.
> сохранять урл на винт и запускать через shellexecute?
Зачем сохранять? Как параметр передавать.
ivanov (2008-05-21 08:00:00) [52]ауу! что дальше общих фраз дело не пойдет?
ну, как всегда...
ivanov (2008-05-19 15:37:00) [53]
> можно
а как именно?
сохранять урл на винт и запускать через shellexecute?
на какое событие вешать?
DVM (2008-05-19 15:22:00) [54]
> а открыть в браузере который в системе по дефолту стоит
> никак нелзя?
можно
ivanov (2008-05-19 13:54:00) [55]а открыть в браузере который в системе по дефолту стоит никак нелзя?
ivanov (2008-05-19 13:52:00) [56]
> Открываем новый экземпляр формы с TWEbbrowser-ом на борту.
в смысле это как, подробнее можно?
и в каком событии это делать?
ЮЮ (2008-05-19 12:18:00) [57]Открываем новый экземпляр формы с TWEbbrowser-ом на борту.