|
|
@@ -688,19 +688,20 @@ this.SingleFileCore = (() => {
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
- static processRules(doc, rules, cssRules) {
|
|
|
+ static processRules(doc, rules, cssRules, cache = {}) {
|
|
|
if (rules) {
|
|
|
Array.from(rules).forEach(rule => {
|
|
|
if (rule.media) {
|
|
|
cssRules.push("@media " + Array.prototype.join.call(rule.media, ",") + " {");
|
|
|
- DomProcessorHelper.processRules(doc, rule.cssRules, cssRules);
|
|
|
+ DomProcessorHelper.processRules(doc, rule.cssRules, cssRules, cache);
|
|
|
cssRules.push("}");
|
|
|
} else if (rule.selectorText) {
|
|
|
const selector = DomUtil.getFilteredSelector(rule.selectorText);
|
|
|
if (selector) {
|
|
|
try {
|
|
|
- if (doc.querySelector(selector)) {
|
|
|
+ if (cache[selector] || doc.querySelector(selector)) {
|
|
|
cssRules.push(rule.cssText);
|
|
|
+ cache[selector] = true;
|
|
|
}
|
|
|
} catch (error) {
|
|
|
cssRules.push(rule.cssText);
|