Delphi 使用EmbeddedWB和:OnBeforeNavigate2在其他浏览器中打开URL
如果用户单击链接,我有时需要打开另一个浏览器 我正在使用CHtmlView::OnBeforeNavigate2取消打开特定URL的集成web浏览器;相反,我将在另一个firefox中打开它 然而,这似乎不是一个好地方做这件事。 由于某些原因,当用户根本没有单击链接时,也会调用OnBeforeNavigate。此事件是取消正在进行的导航的最佳位置。只是,如果要检测此事件是否由超链接单击触发(因为它会在加载帧时触发),可以确定Delphi 使用EmbeddedWB和:OnBeforeNavigate2在其他浏览器中打开URL,delphi,Delphi,如果用户单击链接,我有时需要打开另一个浏览器 我正在使用CHtmlView::OnBeforeNavigate2取消打开特定URL的集成web浏览器;相反,我将在另一个firefox中打开它 然而,这似乎不是一个好地方做这件事。 由于某些原因,当用户根本没有单击链接时,也会调用OnBeforeNavigate。此事件是取消正在进行的导航的最佳位置。只是,如果要检测此事件是否由超链接单击触发(因为它会在加载帧时触发),可以确定Flags参数是否包含该值,例如: procedure TForm1.W
Flags
参数是否包含该值,例如:
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;
程序TForm1.WebBrowser1在重新授权2之前(申请人:ToObject;
常量pDisp:IDispatch;常量URL、标志、TargetFrameName、PostData、,
标题:OleVariant;变量取消:WordBool);
开始
如果((标志和导航超链接)0)和(URL=)http://example.com""那么,
开始
取消:=真;
//用户单击了指向的链接http://example.com 导航是
//将被取消;现在你还需要做什么
结束;
结束;
我无法告诉您哪些版本的Internet Explorer通过了此值,但我可以肯定地告诉您,用于web浏览器的MSDN文档几乎完全过时。谢谢,navHyperlink的值是什么-我的Delphi没有将其定义为
const navHyperlink=$40代码>,它来自枚举。嗯,事件应该使用枚举作为其标志,但显然不是。所以这实际上是没有文件的,但我认为这只是因为文件已经过时了。