【发布时间】:2013-07-30 12:55:30
【问题描述】:
我正在使用TWebBrowser 显示一些 HTML 内容(本地)。该应用程序分为两半,上半部分有 5 个选项卡,下半部分是 Web 浏览器。浏览器的内容经常变化,例如在切换到不同的选项卡时。p>
显示的内容包括我需要阻止和停止每次点击的 URL。我正在尝试使用事件OnBeforeNavigate2,它确实检测到每个点击的链接,但也检测到我何时以编程方式调用Navigate。所以,它最终永远不会导航到任何地方。
我尝试包装 Navigate 调用,所以我总是调用类似...
procedure TForm1.Nav(const S: String);
begin
FLoading:= True;
try
Web.Navigate(S);
Sleep(50);
finally
FLoading:= False;
end;
end;
(睡眠只是为了给它一秒钟的等待时间)
然后捕获呼叫...
procedure TForm1.WebBeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
const URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
begin
if not FLoading then
Cancel:= True;
end;
没有运气尝试这个技巧。如何检测页面或用户何时导航,而不是何时指示浏览器导航?
【问题讨论】:
-
虽然 TLama 很好地回答了这个问题,但我想我会指出我的下一个解决方案会很草率:每当我调用
TWebBrowser.Navigate()时,请包含一个虚拟查询字符串,例如&bypass=Y并进行搜索对于OnBeforeNavigate2事件中的该查询参数。
标签: delphi twebbrowser