如果用户点击链接,我有时需要打开另一个浏览器。
我正在使用CHtmlView :: OnBeforeNavigate2取消集成的Web浏览器打开特定的URL;而我将在另一个Firefox中打开它。
然而,这似乎不是一个好的地方。 出于某种原因,当用户没有单击链接时,也会调用OnBeforeNavigate。
答案 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文档几乎已完全过时。