|
|
@@ -49,6 +49,8 @@ this.FrameTree = this.FrameTree || (() => {
|
|
|
windowId: message.windowId,
|
|
|
tabId: message.tabId,
|
|
|
content: getDoctype(document) + document.documentElement.outerHTML,
|
|
|
+ emptyStyleRulesText: getEmptyStyleRulesText(document),
|
|
|
+ canvasData: getCanvasData(document),
|
|
|
baseURI: document.baseURI,
|
|
|
title: document.title
|
|
|
}).catch(() => {/* ignored */ });
|
|
|
@@ -159,7 +161,9 @@ this.FrameTree = this.FrameTree || (() => {
|
|
|
if (message.method == "getDataRequest" && message.windowId == frameWinId) {
|
|
|
topWindow.removeEventListener("message", onMessage, false);
|
|
|
const content = getDoctype(frameDoc) + frameDoc.documentElement.outerHTML;
|
|
|
- top.postMessage(MESSAGE_PREFIX + "::" + JSON.stringify({ method: "getDataResponse", windowId: message.windowId, content, baseURI: frameDoc.baseURI, title: document.title }), "*");
|
|
|
+ const emptyStyleRulesText = getEmptyStyleRulesText(frameDoc);
|
|
|
+ const canvasData = getCanvasData(frameDoc);
|
|
|
+ top.postMessage(MESSAGE_PREFIX + "::" + JSON.stringify({ method: "getDataResponse", windowId: message.windowId, content, baseURI: frameDoc.baseURI, title: document.title, emptyStyleRulesText, canvasData }), "*");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -174,6 +178,8 @@ this.FrameTree = this.FrameTree || (() => {
|
|
|
frameData.content = message.content;
|
|
|
frameData.baseURI = message.baseURI;
|
|
|
frameData.title = message.title;
|
|
|
+ frameData.emptyStyleRulesText = message.emptyStyleRulesText;
|
|
|
+ frameData.canvasData = message.canvasData;
|
|
|
dataRequestCallbacks.get(message.windowId)(message);
|
|
|
}
|
|
|
|
|
|
@@ -197,4 +203,30 @@ this.FrameTree = this.FrameTree || (() => {
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
+ function getEmptyStyleRulesText(doc) {
|
|
|
+ if (doc) {
|
|
|
+ const textData = [];
|
|
|
+ doc.querySelectorAll("style").forEach(styleElement => {
|
|
|
+ if (!styleElement.textContent) {
|
|
|
+ textData.push(Array.from(styleElement.sheet.cssRules).map(rule => rule.cssText).join("\n"));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return textData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function getCanvasData(doc) {
|
|
|
+ if (doc) {
|
|
|
+ const canvasData = [];
|
|
|
+ doc.querySelectorAll("canvas").forEach(canvasElement => {
|
|
|
+ try {
|
|
|
+ canvasData.push({ dataURI: canvasElement.toDataURL("image/png", ""), width: canvasElement.clientWidth, height: canvasElement.clientHeight });
|
|
|
+ } catch (error) {
|
|
|
+ canvasData.push(null);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return canvasData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
})();
|