输入“shift + {”会自动打开DevTool,在网页文本框中输入“t”会自动刷新网页

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

我为我的自定义 cefsharp 浏览器实现了 IKeyboardHandler 接口。

代码示例如下所示:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            var browser = new ChromiumWebBrowser("https://google.com/");
            browser.KeyboardHandler = new PreviewKeyboardHandler();
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }
    }

    public class PreviewKeyboardHandler : IKeyboardHandler
    {

        public PreviewKeyboardHandler()
        {
        }


        public bool OnKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            return false;
        }

        public bool OnPreKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
        {
            if (!chromiumWebBrowser.IsBrowserInitialized)
            {
                return false;
            }

            switch ((Keys)windowsKeyCode)
            {
                case Keys.F12:

                        browser.ShowDevTools();
                    break;
                case Keys.F5:
                    if (modifiers == CefEventFlags.ControlDown)
                    {
                        // ctrl + F5
                        browser.Reload(true);
                    }
                    else
                    {
                        // F5
                        browser.Reload();
                    }
                    break;
            }

            return false;
        }
}

我现在面临着奇怪的行为。当我在网页文本框中输入“shift + {”时,DevTool将自动打开。当我在网页的文本框中输入“t”时,网页将自动重新加载。如何解决这个问题?

cefsharp版本是92.0.260,.netfamework4.6

winforms cefsharp .net-4.6
1个回答
0
投票

我认为可能由于某些原因,按钮映射不正确。

如果问题只是“t”和“shift + {”那么我认为以下更改将解决您的问题。但如果其他按钮有问题,我认为最好向“Cefsharp.Winforms”作者寻求错误修复或指导。

    public bool OnPreKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
    {
        if (!chromiumWebBrowser.IsBrowserInitialized)
        {
            return false;
        }

        switch ((Keys)windowsKeyCode)
        {
            case Keys.F12:
                if (modifiers != CefEventFlags.ShiftDown)
                    browser.ShowDevTools();
                break;
            case Keys.F5:
                if (modifiers == CefEventFlags.ControlDown)
                {
                    // ctrl + F5
                    browser.Reload(true);
                }
                else
                {
                    // F5
                    if (nativeKeyCode != 20)
                        browser.Reload();
                }
                break;
        }

        return false;
    }
© www.soinside.com 2019 - 2024. All rights reserved.