Index: gc_lang/fr/webext/content_scripts/api.js ================================================================== --- gc_lang/fr/webext/content_scripts/api.js +++ gc_lang/fr/webext/content_scripts/api.js @@ -53,16 +53,7 @@ let xEvent = new CustomEvent("GrammalecteCall", { detail: {sCommand: "parseNode", xNode: xNode} }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: parameter is not a HTML node."); } - }, - - parseText: function (sText) { - if (typeof(sText) === "string") { - let xEvent = new CustomEvent("GrammalecteCall", { detail: {sCommand: "parseText", sText: sText} }); - document.dispatchEvent(xEvent); - } else { - console.log("[Grammalecte API] Error: parameter is not a text."); - } } } Index: gc_lang/fr/webext/content_scripts/init.js ================================================================== --- gc_lang/fr/webext/content_scripts/init.js +++ gc_lang/fr/webext/content_scripts/init.js @@ -388,10 +388,14 @@ } else { oGrammalecte.oGCPanel.stopWaitIcon(); oGrammalecte.oGCPanel.endTimer(); } } + else if (dInfo.sDestination && document.getElementById(dInfo.sDestination)) { + const xEvent = new CustomEvent("GrammalecteResult", { detail: JSON.stringify(result) }); + document.getElementById(dInfo.sDestination).dispatchEvent(xEvent); + } break; case "parseAndSpellcheck1": if (dInfo.sDestination == "__GrammalectePanel__") { oGrammalecte.oGCPanel.refreshParagraph(dInfo.sParagraphId, result); } @@ -512,18 +516,32 @@ if (oCommand.sText) { oGrammalecte.startGCPanel(oCommand.sText); } break; case "parseNode": - // todo - break; - case "parseText": - // todo + if (oCommand.xNode && oCommand.xNode.id) { + if (oCommand.xNode.tagName == "TEXTAREA" || oCommand.xNode.tagName == "INPUT") { + oGrammalecteBackgroundPort.parseAndSpellcheck(oCommand.xNode.value, oCommand.xNode.id); + } + else if (oCommand.xNode.tagName == "IFRAME") { + oGrammalecteBackgroundPort.parseAndSpellcheck(oCommand.xNode.contentWindow.document.body.innerText, oCommand.xNode.id); + } + else { + oGrammalecteBackgroundPort.parseAndSpellcheck(oCommand.xNode.innerText, oCommand.xNode.id); + } + } break; default: console.log("[Grammalecte] Event: Unknown command", oCommand.sCommand); } } catch (e) { showError(e); } }); + + +/* + Note: + Initialization starts when the background is connected. + See: oGrammalecteBackgroundPort.listen() -> case "init" +*/ Index: gc_lang/fr/webext/content_scripts/panel_gc.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.js +++ gc_lang/fr/webext/content_scripts/panel_gc.js @@ -963,10 +963,11 @@ oGrammalecte.oGCPanel.addMessageToGCPanel("⛔ Aucun champ textuel défini. Les changements ne seront pas répercutés sur la zone d’où le texte a été extrait."); this.loadText(sText); } loadText (sText) { + // function also used by the text formatter if (typeof(sText) === "string") { this.dParagraph.clear(); let i = 0; let iStart = 0; let iEnd = 0; @@ -1007,13 +1008,11 @@ } write () { if (this.xNode !== null) { if (this.bResultInEvent) { - const xEvent = new CustomEvent("GrammalecteResult", { - detail: JSON.stringify({ text: this.getText() }) - }); + const xEvent = new CustomEvent("GrammalecteResult", { detail: JSON.stringify({ text: this.getText() }) }); this.xNode.dispatchEvent(xEvent); //console.log("Text sent via an event :", xEvent.detail); } else if (this.bTextArea) { this.xNode.value = this.getText();