feat: clear contextmenu side effect in web component #219

pr675
Hufe921 3 years ago
parent ce70f0d7e8
commit fc356c7eb6

@ -61,7 +61,7 @@ export class ContextMenu {
// 菜单权限 // 菜单权限
this.container.addEventListener('contextmenu', this._proxyContextMenuEvent) this.container.addEventListener('contextmenu', this._proxyContextMenuEvent)
// 副作用处理 // 副作用处理
document.addEventListener('mousedown', this._handleEffect) document.addEventListener('mousedown', this._handleSideEffect)
} }
public removeEvent() { public removeEvent() {
@ -69,7 +69,7 @@ export class ContextMenu {
'contextmenu', 'contextmenu',
this._proxyContextMenuEvent this._proxyContextMenuEvent
) )
document.removeEventListener('mousedown', this._handleEffect) document.removeEventListener('mousedown', this._handleSideEffect)
} }
private _proxyContextMenuEvent = (evt: MouseEvent) => { private _proxyContextMenuEvent = (evt: MouseEvent) => {
@ -99,11 +99,12 @@ export class ContextMenu {
evt.preventDefault() evt.preventDefault()
} }
private _handleEffect = (evt: MouseEvent) => { private _handleSideEffect = (evt: MouseEvent) => {
if (this.contextMenuContainerList.length) { if (this.contextMenuContainerList.length) {
// 点击非右键菜单内 // 点击非右键菜单内
const target = <Element>(evt?.composedPath()[0] || evt.target)
const contextMenuDom = findParent( const contextMenuDom = findParent(
evt.target as Element, target,
(node: Node & Element) => (node: Node & Element) =>
!!node && !!node &&
node.nodeType === 1 && node.nodeType === 1 &&

Loading…
Cancel
Save