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() {