diff --git a/src/pretix/static/pretixpresale/js/ui/iframe.js b/src/pretix/static/pretixpresale/js/ui/iframe.js index c7d0119e13..fc4706b572 100644 --- a/src/pretix/static/pretixpresale/js/ui/iframe.js +++ b/src/pretix/static/pretixpresale/js/ui/iframe.js @@ -7,4 +7,12 @@ var inIframe = function () { }; if (inIframe()) { document.documentElement.classList.add('in-iframe'); + try { + window.parent.postMessage({ + type: "pretix:widget:title", + title: document.title, + }, "*"); + } catch (e) { + console.error("Could not post message to parent.", e); + } } diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index a3d2a152b5..865c04e6c0 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -939,7 +939,18 @@ Vue.component('pretix-overlay', { } }, }, + mounted () { + window.addEventListener('message', this.onMessage, false); + }, + unmounted () { + window.removeEventListener('message', this.onMessage, false); + }, methods: { + onMessage: function(e) { + if (e.data.type && e.data.type == "pretix:widget:title") { + this.$el.querySelector("iframe").title = e.data.title; + } + }, lightboxClose: function () { this.$root.lightbox = null; },