我面临以下问题:
我有一个 Winform (C#),其中包含 CefSharp 浏览器。 我需要防止用户使用“退格”键向后导航。
我搜索了解决方案,发现实现的方法是实现以下方法(IRequestHandler):
bool IRequestHandler.OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser,
IFrame frame, IRequest request, bool isRedirect)
{
if (request.TransitionType.HasFlag(TransitionType.ForwardBack))
{
return true;
}
return false;
}
问题是它并不总是有效。 例如,如果我导航到 google.com,搜索某些内容,然后单击“退格”按钮 - 我返回到上一页。
假设我无法控制网页,我该如何解决这个问题?
我找到了这个解决方案,但我使用Delphi
procedure TForm1.Chromium1PreKeyEvent(Sender: TObject;
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
out isKeyboardShortcut, Result: Boolean);
begin
if event.focus_on_editable_field=0 then
begin
if event.windows_key_code=vk_back then
begin
result:=true;
end;
end
else
begin
result:=false;
end;
end;
这段代码帮助了我:
browser.PreviewKeyDown += Browser_PreviewKeyDown;
private void Browser_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back)
e.Handled = true;
}
防止这种情况的一种方法是添加: NavigationCommands.BrowseBack.InputGestures.Clear();到你的 Frame 构造函数。但我不确定是否有任何副作用。