diff --git a/src/utils/iputils.ts b/src/utils/iputils.ts index c9c6993..50acea2 100644 --- a/src/utils/iputils.ts +++ b/src/utils/iputils.ts @@ -106,6 +106,10 @@ export class IPUtils { const hasTarget = targets.some(t => node.contains(t) || t.contains(node)); if (!hasTarget) return []; + if(targets.some(t => this.equal(t, node))) { + return [node]; + } + // 如果当前节点包含任何排除项,必须向下拆分 const hasExcluded = excluded.some(e => node.contains(e)); if (hasExcluded) { @@ -125,9 +129,7 @@ export class IPUtils { if (subResults.length > 1) { return [node]; } else { - // 特殊情况:如果当前 node 本身就在 targets 中,且 subResults 为空(因为 targets 可能在更深层) - // 或者 subResults 长度就是 1,我们返回 subResults 以保持 mask 尽可能大 - return subResults.length === 0 ? (targets.some(t => t.contains(node)) ? [node] : []) : subResults; + return subResults; } }