Browse Source

removed workaround code

Gildas 5 years ago
parent
commit
c093f3901b
2 changed files with 34 additions and 27 deletions
  1. 32 27
      extension/ui/bg/ui-editor.js
  2. 2 0
      extension/ui/content/content-ui-editor-web.js

+ 32 - 27
extension/ui/bg/ui-editor.js

@@ -170,32 +170,37 @@ singlefile.extension.ui.bg.editor = (() => {
 		savePage();
 	};
 	const updatedResources = {};
-	window.onmessage = event => {
-		const message = JSON.parse(event.data);
-		if (message.method == "setMetadata") {
-			document.title = "[SingleFile] " + message.title;
-			if (message.icon) {
-				const linkElement = document.createElement("link");
-				linkElement.rel = "icon";
-				linkElement.href = message.icon;
-				document.head.appendChild(linkElement);
+	const frameReady = new Promise(resolve => {
+		window.onmessage = event => {
+			const message = JSON.parse(event.data);
+			if (message.method == "setMetadata") {
+				document.title = "[SingleFile] " + message.title;
+				if (message.icon) {
+					const linkElement = document.createElement("link");
+					linkElement.rel = "icon";
+					linkElement.href = message.icon;
+					document.head.appendChild(linkElement);
+				}
 			}
-		}
-		if (message.method == "setContent") {
-			const pageData = {
-				content: message.content,
-				filename: tabData.filename
-			};
-			tabData.options.openEditor = false;
-			singlefile.extension.core.content.download.downloadPage(pageData, tabData.options);
-		}
-		if (message.method == "disableFormatPage") {
-			formatPageButton.remove();
-		}
-		if (message.method == "onUpdate") {
-			tabData.docSaved = message.saved;
-		}
-	};
+			if (message.method == "setContent") {
+				const pageData = {
+					content: message.content,
+					filename: tabData.filename
+				};
+				tabData.options.openEditor = false;
+				singlefile.extension.core.content.download.downloadPage(pageData, tabData.options);
+			}
+			if (message.method == "disableFormatPage") {
+				formatPageButton.remove();
+			}
+			if (message.method == "onUpdate") {
+				tabData.docSaved = message.saved;
+			}
+			if (message.method == "onReady") {
+				resolve();
+			}
+		};
+	});
 	window.onload = browser.runtime.sendMessage({ method: "editor.getTabData" });
 	window.onbeforeunload = event => {
 		if (tabData.options.warnUnsavedPage && !tabData.docSaved) {
@@ -229,10 +234,10 @@ singlefile.extension.ui.bg.editor = (() => {
 				tabData = JSON.parse(tabDataContents.join(""));
 				tabData.docSaved = true;
 				tabDataContents = [];
-				setTimeout(() => {
+				frameReady.then(() => {
 					editorElement.contentWindow.postMessage(JSON.stringify({ method: "init", content: tabData.content }), "*");
 					delete tabData.content;
-				}, 1);
+				});
 			}
 			return Promise.resolve({});
 		}

+ 2 - 0
extension/ui/content/content-ui-editor-web.js

@@ -811,6 +811,8 @@ table {
 	let selectedNote, anchorElement, maskNoteElement, maskPageElement, highlightSelectionMode, removeHighlightMode, resizingNoteMode, movingNoteMode, highlightColor, collapseNoteTimeout, cuttingMode;
 	let removedElements = [];
 
+	window.parent.postMessage(JSON.stringify({ "method": "onReady" }), "*");
+
 	window.onmessage = async event => {
 		const message = JSON.parse(event.data);
 		if (message.method == "init") {