Overview
Comment: | [fx] fix web API for Chrome: use JSON.stringify() for dispatching events |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fx |
Files: | files | file ages | folders |
SHA3-256: |
2189e58b3bcaee0e4d24068200bf2518 |
User & Date: | olr on 2020-04-02 13:58:17 |
Other Links: | manifest | tags |
Context
2020-04-02
| ||
14:43 | [fr] mauvaise fonction, + version 1.8.2 check-in: 5ebb4cd8bf user: olr tags: trunk, fr | |
13:58 | [fx] fix web API for Chrome: use JSON.stringify() for dispatching events check-in: 2189e58b3b user: olr tags: trunk, fx | |
13:57 | [fx] revert: one spell error style check-in: f21379f02a user: olr tags: trunk, fx | |
Changes
Modified gc_lang/fr/webext/content_scripts/api.js from [5a54ca7263] to [184dcb850a].
1 2 3 4 5 6 7 8 9 10 11 12 13 | // JavaScript "use strict"; const oGrammalecteAPI = { // functions callable from within pages // to be sent to the content-cript via an event “GrammalecteCall” sVersion: "1.0", openPanelForNode: function (vNode) { // Parameter: a HTML node or the identifier of a HTML node | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | // JavaScript "use strict"; const oGrammalecteAPI = { // functions callable from within pages // to be sent to the content-cript via an event “GrammalecteCall” sVersion: "1.0", openPanelForNode: function (vNode) { // Parameter: a HTML node or the identifier of a HTML node if (vNode instanceof HTMLElement && vNode.id) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode.id}) }); document.dispatchEvent(xEvent); } else if (typeof(vNode) === "string" && document.getElementById(vNode)) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode}) }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); } }, openPanelForText: function (sText, vNode=null) { // Parameter: text to analyze, and optionaly a node to send results to. if (typeof(sText) === "string") { let sNodeId = ""; if (vNode instanceof HTMLElement && vNode.id) { sNodeId = vNode.id; } else if (typeof(vNode) === "string" && document.getElementById(vNode)) { sNodeId = vNode; } let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForText", sText: sText, sNodeId: sNodeId}) }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: parameter is not a text."); } }, parseNode: function (vNode) { /* Parameter: a HTML node (with a identifier) or the identifier of a HTML node. The result will be sent as an event “GrammalecteResult” to the node. */ if (vNode instanceof HTMLElement && vNode.id) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode.id}) }); document.dispatchEvent(xEvent); } else if (typeof(vNode) === "string" && document.getElementById(vNode)) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode}) }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); } }, parseText: function (sText, vNode) { // Parameter: text to analyze, and a node to send results to. if (typeof(sText) === "string") { if (vNode instanceof HTMLElement && vNode.id) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode.id}) }); document.dispatchEvent(xEvent); } else if (typeof(vNode) === "string" && document.getElementById(vNode)) { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode}) }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); } } else { console.log("[Grammalecte API] Error: parameter is not a text."); } }, getSpellSuggestions: function (sWord, sDestination, sRequestId="") { /* parameters: - sWord (string) - sDestination: HTML identifier (string) -> the result will be sent as an event “GrammalecteResult” to destination node - sRequestId: custom identifier for the request (string) [default = ""] */ if (typeof(sWord) === "string" && typeof(sDestination) === "string" && typeof(sRequestId) === "string") { let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "getSpellSuggestions", sWord: sWord, sDestination: sDestination, sRequestId: sRequestId}) }); document.dispatchEvent(xEvent); } else { console.log("[Grammalecte API] Error: one or several parameters aren’t string."); } } } |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/init.js from [7191bd4109] to [d05c6e1179].
︙ | ︙ | |||
460 461 462 463 464 465 466 | Callable API for the webpage. */ document.addEventListener("GrammalecteCall", function (xEvent) { // GrammalecteCall events are dispatched by functions in the API script // The script is loaded below. try { | | | | | | | > | | | | | | | | | 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 | Callable API for the webpage. */ document.addEventListener("GrammalecteCall", function (xEvent) { // GrammalecteCall events are dispatched by functions in the API script // The script is loaded below. try { let oCommand = JSON.parse(xEvent.detail); switch (oCommand.sCommand) { case "openPanelForNode": if (oCommand.sNodeId && document.getElementById(oCommand.sNodeId)) { oGrammalecte.startGCPanel(document.getElementById(oCommand.sNodeId)); } break; case "openPanelForText": if (oCommand.sText && oCommand.sNodeId && document.getElementById(oCommand.sNodeId)) { oGrammalecte.startGCPanel(oCommand.sText, document.getElementById(oCommand.sNodeId)); } break; case "parseNode": if (oCommand.sNodeId && document.getElementById(oCommand.sNodeId)) { let xNode = document.getElementById(oCommand.sNodeId); if (xNode.tagName == "TEXTAREA" || xNode.tagName == "INPUT") { oGrammalecteBackgroundPort.parseAndSpellcheck(xNode.value, oCommand.sNodeId); } else if (xNode.tagName == "IFRAME") { oGrammalecteBackgroundPort.parseAndSpellcheck(xNode.contentWindow.document.body.innerText, oCommand.sNodeId); } else { oGrammalecteBackgroundPort.parseAndSpellcheck(xNode.innerText, oCommand.sNodeId); } } break; case "parseText": if (oCommand.sText && oCommand.sNodeId) { oGrammalecteBackgroundPort.parseAndSpellcheck(oCommand.sText, oCommand.sNodeId); } break; case "getSpellSuggestions": if (oCommand.sWord && oCommand.sDestination) { oGrammalecteBackgroundPort.getSpellSuggestions(oCommand.sWord, oCommand.sDestination, oCommand.sErrorId); } break; default: console.log("[Grammalecte] Event: Unknown command", oCommand.sCommand); } } |
︙ | ︙ |