覆盖 Webview2 上下文菜单以及默认菜单
Overriding Webview2 context menu along with default one
按照下面提到的方法 link 我能够覆盖默认上下文菜单。
我有一个问题,有没有办法根据
等条件显示两者
- 普通右键单击 - 自定义覆盖上下文菜单
- CTRL 或 SHIFT 按 + 右键单击 - 默认上下文菜单
这其实很简单,只要您有 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();
按照下面提到的方法 link 我能够覆盖默认上下文菜单。
我有一个问题,有没有办法根据
等条件显示两者- 普通右键单击 - 自定义覆盖上下文菜单
- CTRL 或 SHIFT 按 + 右键单击 - 默认上下文菜单
这其实很简单,只要您有 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();