I was recently creating a Chrome extension named Butler-AI that allows using the ChatGPT on any website by typing a simple command and during that time found that it is not easy to update the textbox of Facebook using JavaScript.
After digging up the web, I came up with a solution and it works like a charm.
If you inspect the text area where you write anything for the post, you will find that Facebook uses a div with the attribute role="textbox" and contenteditable="true", inside this there is a p tag and a br.

The moment you start typing the br is replaced with a <span data-lexical-text="true">hellow</span>.
Thus we have to update the value in this span and after that trigger an input event from the parent of this span that is from the div[role="textbox"] to make the update.
function facebookUpdate(actEl, text) {
if (document.body.parentElement.id == "facebook") {
var dc = getDeepestChild(actEl);
var elementToDispatchEventFrom = dc.parentElement;
let newEl;
if (dc.nodeName.toLowerCase() == "br") {
// attempt to paste into empty messenger field
// by creating new element and setting it's value
newEl = document.createElement("span");
newEl.setAttribute("data-lexical-text", "true");
dc.parentElement.appendChild(newEl);
newEl.innerText = text;
} else {
// attempt to paste into not empty messenger field
// by changing existing content
dc.textContent = text;
elementToDispatchEventFrom = elementToDispatchEventFrom.parentElement;
}
// simulate user's input
elementToDispatchEventFrom.dispatchEvent(new InputEvent("input", { bubbles: true }));
// remove new element if it exists
// otherwise there will be two of them after
// Facebook adds it itself!
if (newEl) newEl.remove();
}
}
// helper function
function getDeepestChild(element) {
if (element.lastChild) {
return getDeepestChild(element.lastChild);
} else {
return element;
}
}
Here we have to pass the text area and the text and it will dynamically update the text in the Facebook text box, works with the messenger as well.
facebookUpdate(document.querySelector('[role="textbox"]'), "Hello World!");
or
facebookUpdate(document.querySelector('.notranslate'), "Hello World!");