|
@@ -77,6 +77,8 @@ this.docHelper = this.docHelper || (() => {
|
|
|
if (win) {
|
|
if (win) {
|
|
|
canvasData = getCanvasData(doc, win);
|
|
canvasData = getCanvasData(doc, win);
|
|
|
imageData = getImageData(doc, win, options);
|
|
imageData = getImageData(doc, win, options);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (win) {
|
|
|
if (doc.body && (options.removeHiddenElements || options.removeUnusedFonts || options.compressHTML)) {
|
|
if (doc.body && (options.removeHiddenElements || options.removeUnusedFonts || options.compressHTML)) {
|
|
|
let elementsInfo = getElementsInfo(win, doc.body);
|
|
let elementsInfo = getElementsInfo(win, doc.body);
|
|
|
if (options.removeHiddenElements) {
|
|
if (options.removeHiddenElements) {
|
|
@@ -85,7 +87,7 @@ this.docHelper = this.docHelper || (() => {
|
|
|
ignoredTags = ignoredTags.concat("SCRIPT");
|
|
ignoredTags = ignoredTags.concat("SCRIPT");
|
|
|
}
|
|
}
|
|
|
markHiddenCandidates(win, doc.body, elementsInfo, false, new Set(), ignoredTags);
|
|
markHiddenCandidates(win, doc.body, elementsInfo, false, new Set(), ignoredTags);
|
|
|
- markHiddenElements(win, doc.body, imageData);
|
|
|
|
|
|
|
+ markHiddenElements(doc.body, imageData);
|
|
|
doc.querySelectorAll("iframe").forEach(element => {
|
|
doc.querySelectorAll("iframe").forEach(element => {
|
|
|
if (element.getBoundingClientRect) {
|
|
if (element.getBoundingClientRect) {
|
|
|
const boundingRect = element.getBoundingClientRect();
|
|
const boundingRect = element.getBoundingClientRect();
|
|
@@ -160,7 +162,7 @@ this.docHelper = this.docHelper || (() => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function getElementsInfo(win, element, elementsInfo = new Map()) {
|
|
function getElementsInfo(win, element, elementsInfo = new Map()) {
|
|
|
- const elements = Array.from(element.childNodes).filter(node => !win || node instanceof win.Element);
|
|
|
|
|
|
|
+ const elements = Array.from(element.childNodes).filter(node => node.nodeType == 1);
|
|
|
elements.forEach(element => {
|
|
elements.forEach(element => {
|
|
|
getElementsInfo(win, element, elementsInfo);
|
|
getElementsInfo(win, element, elementsInfo);
|
|
|
setInfo(win, element, elementsInfo);
|
|
setInfo(win, element, elementsInfo);
|
|
@@ -201,8 +203,7 @@ this.docHelper = this.docHelper || (() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function markHiddenElements(win, element, imageData) {
|
|
|
|
|
- const elements = Array.from(element.childNodes).filter(node => node.nodeType == win.Node.ELEMENT_NODE);
|
|
|
|
|
|
|
+ function markHiddenElements(element, imageData) {
|
|
|
if (element.getAttribute(REMOVED_CONTENT_ATTRIBUTE_NAME) == "") {
|
|
if (element.getAttribute(REMOVED_CONTENT_ATTRIBUTE_NAME) == "") {
|
|
|
element.removeAttribute(REMOVED_CONTENT_ATTRIBUTE_NAME);
|
|
element.removeAttribute(REMOVED_CONTENT_ATTRIBUTE_NAME);
|
|
|
if (element.tagName == "IMG") {
|
|
if (element.tagName == "IMG") {
|
|
@@ -212,7 +213,7 @@ this.docHelper = this.docHelper || (() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- elements.forEach(element => markHiddenElements(win, element, imageData));
|
|
|
|
|
|
|
+ Array.from(element.childNodes).filter(node => node.nodeType == 1).forEach(element => markHiddenElements(element, imageData));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|