diff --git a/packages/renderless/src/grid/utils/dom.ts b/packages/renderless/src/grid/utils/dom.ts index 4e96f5d9ac..f8cd4fb266 100644 --- a/packages/renderless/src/grid/utils/dom.ts +++ b/packages/renderless/src/grid/utils/dom.ts @@ -188,11 +188,15 @@ export const colToVisible = ($table, column, move) => { } export const hasDataTag = (el, value) => { - // el可能为shadow-root,shadow-root没有getAttribute方法 - if (!el || !value || !el.getAttribute) { + if (!el || !value) { return false } + // 处理遇到 shadowRoot的情况 + if (el.host) { + el = el.host + } + return (' ' + el.getAttribute('data-tag') + ' ').includes(' ' + value + ' ') } diff --git a/packages/utils/src/popper/index.ts b/packages/utils/src/popper/index.ts index 4ef9a88a66..620fa39717 100644 --- a/packages/utils/src/popper/index.ts +++ b/packages/utils/src/popper/index.ts @@ -76,6 +76,10 @@ const isFixed = (el: HTMLElement) => { return true } + // 处理遇到 shadowRoot的情况 + if (el.host) { + el = el.host + } return el.parentNode ? isFixed(el.parentNode as HTMLElement) : false } diff --git a/packages/vue-hooks/src/vue-popper.ts b/packages/vue-hooks/src/vue-popper.ts index 2342522ccf..f12bc1888e 100644 --- a/packages/vue-hooks/src/vue-popper.ts +++ b/packages/vue-hooks/src/vue-popper.ts @@ -58,6 +58,11 @@ const getReferMaxZIndex = (reference) => { do { reference = reference.parentNode + // 处理遇到shadowRoot的情况 + if (reference && reference instanceof ShadowRoot && reference.host) { + reference = reference.host + } + if (reference) { z = getZIndex(reference) } else {