diff --git a/src/web/Manager.mjs b/src/web/Manager.mjs index 2e87210c1d..ae972a59d6 100755 --- a/src/web/Manager.mjs +++ b/src/web/Manager.mjs @@ -125,6 +125,7 @@ class Manager { window.addEventListener("focus", this.window.windowFocus.bind(this.window)); window.addEventListener("statechange", this.app.stateChange.bind(this.app)); window.addEventListener("popstate", this.app.popState.bind(this.app)); + window.addEventListener("message", this.input.handlePostMessage.bind(this.input)); // Controls document.getElementById("bake").addEventListener("click", this.controls.bakeClick.bind(this.controls)); diff --git a/src/web/waiters/InputWaiter.mjs b/src/web/waiters/InputWaiter.mjs index 3999fd2f18..9e05932f00 100644 --- a/src/web/waiters/InputWaiter.mjs +++ b/src/web/waiters/InputWaiter.mjs @@ -1654,6 +1654,22 @@ class InputWaiter { this.changeTab(inputNum, this.app.options.syncTabs); } + /** + * Handler for incoming postMessages + * If the events data has a `type` property set to `dataSubmit` + * the value property is set to the current input + * @param {event} e + * @param {object} e.data + * @param {string} e.data.type - the type of request, currently the only value is "dataSubmit" + * @param {string} e.data.value - the value of the message + */ + handlePostMessage(e) { + if ("data" in e && "type" in e.data && "value" in e.data) { + if (e.data.type === "dataSubmit") { + this.setInput(e.data.value); + } + } + } } export default InputWaiter;