diff --git a/src/components/MessageHTMLBody.vue b/src/components/MessageHTMLBody.vue index 978a58c640..a990a25729 100644 --- a/src/components/MessageHTMLBody.vue +++ b/src/components/MessageHTMLBody.vue @@ -154,6 +154,19 @@ export default { if (this.isSenderTrusted) { this.displayIframe() } + + // Events occurring into the iframe are forced to bubble to the + // document, to be intercepted by other functions + const propagateEvents = ['click', 'keydown', 'keyup'] + propagateEvents.forEach((eventType) => { + iframeDoc.addEventListener(eventType, (e) => { + const cloned = new e.constructor(e.type, e) + this.$refs.iframe.dispatchEvent(cloned) + if (cloned.defaultPrevented) { + e.preventDefault() + } + }) + }) }, onBeforePrint() {