|
|
@@ -363,6 +363,7 @@ const SingleFileCore = (() => {
|
|
|
});
|
|
|
|
|
|
function processRules(rules, cssRules) {
|
|
|
+ const REGEXP = /::after|::before|::first-line|::first-letter|:focus|:focus-within|:hover|:link|:visited|:active/gi;
|
|
|
if (rules) {
|
|
|
Array.from(rules).forEach(rule => {
|
|
|
if (rule.media) {
|
|
|
@@ -370,7 +371,21 @@ const SingleFileCore = (() => {
|
|
|
processRules(rule.cssRules, cssRules);
|
|
|
cssRules.push("}");
|
|
|
} else if (rule.selectorText) {
|
|
|
- const selector = rule.selectorText.replace(/::after|::before|::first-line|::first-letter|:focus|:hover/gi, "").trim();
|
|
|
+ let selector = rule.selectorText;
|
|
|
+ if (selector.match(REGEXP)) {
|
|
|
+ let simpleSelectors = selector.split(",");
|
|
|
+ simpleSelectors = simpleSelectors.map(selector => {
|
|
|
+ while (selector.match(REGEXP)) {
|
|
|
+ selector = selector.replace(REGEXP, "").trim();
|
|
|
+ }
|
|
|
+ selector = selector.replace(/:[^(]+\(\)/gi, "");
|
|
|
+ if (selector == "") {
|
|
|
+ selector = "*";
|
|
|
+ }
|
|
|
+ return selector;
|
|
|
+ });
|
|
|
+ selector = simpleSelectors.join(",");
|
|
|
+ }
|
|
|
if (selector) {
|
|
|
try {
|
|
|
if (doc.querySelector(selector)) {
|
|
|
@@ -522,24 +537,24 @@ const SingleFileCore = (() => {
|
|
|
if (frameElement.tagName == "OBJECT") {
|
|
|
frameElement.setAttribute("data", "about:blank");
|
|
|
} else {
|
|
|
- frameElement.setAttribute("src", "about:blank");
|
|
|
+ frameElement.setAttribute("src", "about:blank");
|
|
|
}
|
|
|
if (frameData.processor) {
|
|
|
const pageData = await frameData.processor.getPageData();
|
|
|
if (frameElement.tagName == "OBJECT") {
|
|
|
frameElement.setAttribute("data", "data:text/html," + pageData.content);
|
|
|
} else {
|
|
|
- frameElement.setAttribute("srcdoc", pageData.content);
|
|
|
- frameElement.sandbox = true;
|
|
|
+ frameElement.setAttribute("srcdoc", pageData.content);
|
|
|
+ frameElement.sandbox = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
} else {
|
|
|
if (frameElement.tagName == "OBJECT") {
|
|
|
frameElement.setAttribute("data", "about:blank");
|
|
|
} else {
|
|
|
- frameElement.setAttribute("src", "about:blank");
|
|
|
- }
|
|
|
+ frameElement.setAttribute("src", "about:blank");
|
|
|
+ }
|
|
|
}
|
|
|
}));
|
|
|
}
|