CefSharp 禁用“退格”键向后导航

问题描述 投票:0回答:3

我面临以下问题:

我有一个 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,搜索某些内容,然后单击“退格”按钮 - 我返回到上一页。

假设我无法控制网页,我该如何解决这个问题?

c# winforms cefsharp
3个回答
2
投票

我找到了这个解决方案,但我使用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;

0
投票

这段代码帮助了我:

browser.PreviewKeyDown += Browser_PreviewKeyDown;


private void Browser_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Back)
        e.Handled = true;
}

-1
投票

防止这种情况的一种方法是添加: NavigationCommands.BrowseBack.InputGestures.Clear();到你的 Frame 构造函数。但我不确定是否有任何副作用。

© www.soinside.com 2019 - 2024. All rights reserved.