如何指定对象右击可弹出上下文菜单?
- 使用document.querySelector(targetSelector)获取指定区域,
- 然后使用node1.contains(node2)判断node2是否时node1子节点,如果是在指定区域内,否则不在
- 根据2的结果决定是否弹出上下文菜单
/**
itemArr:菜单项
targetSelector:指定显示上下文菜单的区域type:string:#id,.className等
**/
const useContextMenu = (itemArr, targetSelector, deps) => {
let clickedNode = {}
const menu = new Menu()
itemArr.forEach(item => {
menu.append(new MenuItem(item))
})
const handler = (e) => {
// 区域限定
//e.targets是否时document.querySelector(targetSelector)的子节点
if (document.querySelector(targetSelector).contains(e.target)) {
clickedNode.current = e.target
e.preventDefault()
menu.popup({
window: remote.getCurrentWindow()
})
}
}
window.addEventListener('contextmenu', handler) //右击鼠标时触发执行 handler
}