使用EmbeddedWB和:OnBeforeNavigate2在另一个浏览器中打开URL

时间:2014-08-14 14:38:17

标签: delphi

如果用户点击链接,我有时需要打开另一个浏览器。

我正在使用CHtmlView :: OnBeforeNavigate2取消集成的Web浏览器打开特定的URL;而我将在另一个Firefox中打开它。

然而,这似乎不是一个好的地方。 出于某种原因,当用户没有单击链接时,也会调用OnBeforeNavigate。

1 个答案:

答案 0 :(得分:3)

OnBeforeNavigate2事件是取消正在进行的导航的最佳位置。只是,如果你想检测这个事件是否是由超链接点击触发的(因为它在加载时触发了例如帧),你可以确定Flags参数是否包含navHyperlink值,如这个例如:

procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; const URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if ((Flags and navHyperlink) <> 0) and (URL = 'http://example.com') then
  begin
    Cancel := True;
    // the user clicked a link to http://example.com and the navigation is
    // going to be cancelled; now do whatever else you need here
  end;
end;

我无法告诉您哪个版本的Internet Explorer传递了此值,但我可以肯定地告诉您,Web浏览器的MSDN文档几乎已完全过时。