Skip to content

Commit c526981

Browse files
committed
fix:兼容火狐浏览器无法正确判断元素(DevCloudFE#1883
1 parent 69917a5 commit c526981

File tree

1 file changed

+12
-2
lines changed
  • packages/devui-vue/devui/shared/utils

1 file changed

+12
-2
lines changed

packages/devui-vue/devui/shared/utils/dom.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ export function isComponent(target: any): target is ComponentPublicInstance {
99
return !!(target?.$el);
1010
}
1111

12+
/**
13+
* 兼容火狐浏览器判断是否为元素节点
14+
* @param {any} element
15+
* @returns {boolean}
16+
*/
17+
function judgeFireIsElement (element: Element | ComponentPublicInstance | null) {
18+
const str = Object.prototype.toString.call(element);
19+
return str.includes('object')&&str.includes('HTML')&&str.includes('Element');
20+
}
21+
1222
/**
1323
* 提取 Vue Intance 中的元素,如果本身就是元素,直接返回。
1424
* @param {any} element
@@ -17,13 +27,13 @@ export function isComponent(target: any): target is ComponentPublicInstance {
1727
export function getElement(
1828
element: Element | ComponentPublicInstance | null
1929
): Element | null {
20-
if (element instanceof Element) {
30+
if (element instanceof Element || judgeFireIsElement(element)) {
2131
return element;
2232
}
2333
if (
2434
element &&
2535
typeof element === 'object' &&
26-
element.$el instanceof Element
36+
(element.$el instanceof Element || judgeFireIsElement(element.$el))
2737
) {
2838
return element.$el;
2939
}

0 commit comments

Comments
 (0)