Реагируем на клик по ссылке в WebBrowser

Материал из DRKB


var
  Document: IHtmlDocument2;
  V: Variant;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('about:blank');
  while WebBrowser1.Document = nil do
    Application.ProcessMessages;
  Document := WebBrowser1.Document as IHtmlDocument2;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  V[0] :='<a href="http://ya.ru">Run</a>';
  Document.Writeln(PSafeArray(TVarData(v).VArray));
  WebBrowser1.OleObject.Document.ParentWindow.Scroll(0, 10000000);
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if url <> 'about:blank' then
  begin
    WebBrowser2.Navigate(URL);
    Cancel := True;
  end;
end;


Author: Rouse_
Source: Взято из http://forum.sources.ru
ID: 03523



var
  NavigateTo: Boolean = False;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if NavigateTo then
  begin
    Cancel := True;
    WebBrowser2.Navigate(URL);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate('about:<a href="http://ya.ru">Run</a>');
  NavigateTo := True;
end;


Author: s-mike
Source: Взято из http://forum.sources.ru
ID: 03524



  • OnNewWindow2

Возникает при попытке открыть документ в новом окне. Если Вы хотите, чтобы документ был открыт в Вашем экземпляре браузера, то Вам нужно создать свой экземпляр браузера и параметру ppDisp присвоить интерфейсную ссылку на этот экземпляр:

procedure TFormSimpleWB.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
var
  newForm: TFormSimpleWB;
begin
  newForm := TFormSimpleWB.Create(Application);
  newForm.Show;
  ppDisp := newForm.WebBrowser1.ControlInterface;
end;


Author: -TOXA-
Source: http://forum.sources.ru
ID: 03525