shadow root

This commit is contained in:
Gabe Yuan
2023-08-25 22:48:11 +08:00
parent 86bc915d74
commit 9eceb8641d

View File

@@ -142,10 +142,13 @@ export class Translator {
this.rule = { ...this.rule, textStyle }; this.rule = { ...this.rule, textStyle };
}; };
_queryFilter = (selector, rootNode) => { _querySelectorAll = (selector, node) => {
return Array.from(rootNode.querySelectorAll(selector)).filter( try {
(node) => this._queryFilter(selector, node).length === 0 return node.querySelectorAll(selector);
); } catch (err) {
console.log(`[querySelectorAll err]: ${selector}`);
}
return [];
}; };
_queryNodes = (rootNode = document) => { _queryNodes = (rootNode = document) => {
@@ -167,11 +170,11 @@ export class Translator {
.split(SHADOW_KEY) .split(SHADOW_KEY)
.map((item) => item.trim()); .map((item) => item.trim());
if (outSelector && inSelector) { if (outSelector && inSelector) {
const outNodes = rootNode.querySelectorAll(outSelector); const outNodes = this._querySelectorAll(outSelector, rootNode);
outNodes.forEach((outNode) => { outNodes.forEach((outNode) => {
if (outNode.shadowRoot) { if (outNode.shadowRoot) {
this._rootNodes.add(outNode.shadowRoot); this._rootNodes.add(outNode.shadowRoot);
this._queryFilter(inSelector, outNode.shadowRoot).forEach( this._querySelectorAll(inSelector, outNode.shadowRoot).forEach(
(item) => { (item) => {
this._tranNodes.add(item); this._tranNodes.add(item);
} }
@@ -180,7 +183,7 @@ export class Translator {
}); });
} }
} else { } else {
this._queryFilter(selector, rootNode).forEach((item) => { this._querySelectorAll(selector, rootNode).forEach((item) => {
this._tranNodes.add(item); this._tranNodes.add(item);
}); });
} }
@@ -210,11 +213,11 @@ export class Translator {
// 解除节点变化监听 // 解除节点变化监听
this._mutaObserver.disconnect(); this._mutaObserver.disconnect();
this._tranNodes.forEach((node) => {
// 解除节点显示监听 // 解除节点显示监听
this._interseObserver.unobserve(node); this._interseObserver.disconnect();
// 移除已插入元素 // 移除已插入元素
this._tranNodes.forEach((node) => {
node.querySelector(APP_LCNAME)?.remove(); node.querySelector(APP_LCNAME)?.remove();
}); });
@@ -244,7 +247,7 @@ export class Translator {
return; return;
} }
// console.log("---> ", el); console.log("---> ", q);
const span = document.createElement(APP_LCNAME); const span = document.createElement(APP_LCNAME);
span.style.visibility = "visible"; span.style.visibility = "visible";