-
есть страница, http://moj.com на этой странице несколько ссылок, некоторые из них вида http://moj.com/thread.html, другие же вида http://drugoj.com/для работы используется компонент TWEbbrowserкак сделать чтобы по клику на ссылке те, которые http://moj.com открывались в этом-же окне, а все другие чтобы в новом окне? как сделать проверку строки - я знаю,: if pos('http://moj.com/', s) > 0 then
else
-
Открываем новый экземпляр формы с TWEbbrowser-ом на борту.
-
> Открываем новый экземпляр формы с TWEbbrowser-ом на борту.
в смысле это как, подробнее можно? и в каком событии это делать?
-
а открыть в браузере который в системе по дефолту стоит никак нелзя?
-
> а открыть в браузере который в системе по дефолту стоит > никак нелзя?
можно
-
> можно
а как именно? сохранять урл на винт и запускать через shellexecute? на какое событие вешать?
-
ауу! что дальше общих фраз дело не пойдет? ну, как всегда...
-
> а как именно?
ShellExecute.
> сохранять урл на винт и запускать через shellexecute?
Зачем сохранять? Как параметр передавать.
-
так, хочу код :) дело в том, что я пробовал через shellexcute, не работает и еще важно, на какое событие браузера это дело повесить?
-
> хочу код
"Иванов на остановке, в ожиданьи кружки пива, в предкушеньи колесницы .." (С) БГ
Какой тебе еще код ?
Создавай новый экз-р TWEbbrowser и вызывай его метод Navigate
-
итак,резюме: открыть ссылку в браузере по дефолту через shellexecute не выйдет, разве что сохранять ее как файл *.url, но это к "мастерству" никакого отношения не имеет, а также - изврат. создавать новый экземпляр формы с браузером - меня не устраивает такое решение. к сожалению в который раз убедился, что "мастера" когда доходит до относительно сложных вопросов помочь ничем, кроме как напыщено заявлять "можно", "нельзя" не могут. печально.
-
> открыть ссылку в браузере по дефолту через shellexecute > не выйдет, разве что сохранять ее как файл *.url, но это > к "мастерству" никакого отношения не имеет, а также - изврат. >
Все выйдет еще как. Ты не пробовал в командной строке набирать:
C:\Program Files\Internet Explorer>iexplore.exe www.google.ru ???
Попробуй, удивишься.
-
> ivanov
Между прочим, при клике в TWebBrowser по ссылке, в теге которой указано "Открывать в новом окне" все прекрасно открывается в новом окне браузера. Если же ты хочешь ВСЕ ССЫЛКИ открывать в новом окне, то, очевидно, ShellExecute тебе в помощь.
> ivanov (21.05.08 17:48) [8] > > так, хочу код :) > дело в том, что я пробовал через shellexcute, не работает
Может покажешь как ты пробовал? Или ты и не пробовал вовсе?
> и еще важно, на какое событие браузера это дело повесить?
OnBeforeNavigate2.
-
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;
вот пожалуста. куча рекламных окон.
-
> > вот пожалуста. > куча рекламных окон. >
Что написал, то и получил, чему ж тут удивляться)
-
> Что написал, то и получил, чему ж тут удивляться)
??? что конкретнo здесь не правильно?
-
> что конкретнo здесь не правильно?
Конкретно надо отделять мух от котлет в OnBeforeNavigate2. Это событие возникает чаще, чем ты думаешь, особенно на навороченных страницах с баннерами во фреймах и.т.д.
-
так вы же сами написали в пост #12. каким образом тогда отделять мух от котлет, если неизвестно какие адреса реклама, а какие не реклама? получается это событие не подходит...
-
> что конкретнo здесь не правильно?
Каждая вызванная тобой ShellExecute стартует отдельный процесс браузера. Каждый стартованный процесс браузера создает как минимум одно окно.
> каким образом тогда отделять мух от котлет, если неизвестно > какие адреса реклама, а какие не реклама?
Ты предлагаешь определять это нам ?
Или ты полагаешь, что на свете существует супер-пупер-функция типа
function IsReklama(URL: String): Boolean;
которая сделает это сама ?
-
> ivanov
И вообще - если вся эта твоя хитромудрая затея сводится к необходимости блокировать запросы к нежелательным ресурсам, то реализуется все то гораздо проще: браузеру указывается прокси-сервер с требуемой функциональностью, который настраивается требуемым образом.
|