覆盖 Webview2 上下文菜单以及默认菜单

Overriding Webview2 context menu along with default one

按照下面提到的方法 link 我能够覆盖默认上下文菜单。

我有一个问题,有没有办法根据

等条件显示两者

这其实很简单,只要您有 link 的代码。

contextmenu 事件派生自 MouseEvent,因此它包含有关按下的控制键的信息。

只需将 javascript contextmenu 处理程序替换为:

document.addEventListener('contextmenu', function (event)
{
    if (!event.ctrlKey && !event.shiftKey)
    {
        let jsonObject =
        {
            Key: 'contextmenu',
            Value:
            {
                X: event.screenX,
                Y: event.screenY
            }
        };
        window.chrome.webview.postMessage(jsonObject);
        event.preventDefault();
    }
});

它的工作原理是,如果按下控制键,它绝对不会执行任何操作,这将显示默认菜单。如果没有按下任何键,它会将坐标发送到 C# 并调用 event.preventDefault();.

注意:在link的代码中,我调用:

webView21.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;

在这里,你不应该这样称呼。而是在 javascript.

中调用 event.preventDefault();