function () { function onAttributeChange(target, attribute, callback) { const observerCallback = (mutationsList) => { for (let mutation of mutationsList) { if (mutation.type === 'attributes' && mutation.attributeName === attribute) { callback(mutation.target); } } }; const observer = new MutationObserver(observerCallback); const config = { attributes: true }; observer.observe(target, config); console.log("Start observing."); } function waitForElementToAppear(selector, callback) { const targetNode = document.body; const config = { childList: true, subtree: true }; const observer = new MutationObserver((mutationsList, observer) => { const element = document.querySelector(selector); if (element) { observer.disconnect(); setTimeout(() => callback(element), 500); } }); observer.observe(targetNode, config); } const speech = document.querySelector("#speech"); if (speech) { if (speech.textContent.trim() === "Record") { speech.textContent = "Send"; const record = document.querySelector(".record-button"); record.click() } else { const stop = document.querySelector(".stop-button"); stop.click(); speech.textContent = "Processing"; speech.disabled= true waitForElementToAppear(".record-button", (button) => { speech.disabled= false speech.textContent = "Record"; }); } } }