diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 781f9fe93740960d4ff088e8aa301094d5675eb8..5a056d444c86918021de786536f86ab93515a333 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -20,6 +20,8 @@ Fixed
 * In case the status code of a response was not in the range between 200 and 299
   but still indicates that the response should be delivered, e. g. in the case
   of a redirected request, the service worker served the offline fallback page.
+* In some cases, the resize listener for the IFrame in the `LegacyBaseTemplate`
+  did not trigger.
 
 `3.0b1` - 2023-02-27
 --------------------
diff --git a/aleksis/core/frontend/components/LegacyBaseTemplate.vue b/aleksis/core/frontend/components/LegacyBaseTemplate.vue
index 324882b44c5efc85e4bef9c9fcce026cf1728320..25bf5e903e40bf03163472d73e65cc7f84fd5972 100644
--- a/aleksis/core/frontend/components/LegacyBaseTemplate.vue
+++ b/aleksis/core/frontend/components/LegacyBaseTemplate.vue
@@ -77,13 +77,13 @@ export default {
       const title = this.$refs.contentIFrame.contentWindow.document.title;
       this.$root.$setPageTitle(title);
 
-      // Adapt height of IFrame according to the height of its contents once and listen to resize events
+      // Adapt height of IFrame according to the height of its contents once and observe height changes
       this.iFrameHeight =
         this.$refs.contentIFrame.contentDocument.body.scrollHeight;
-      this.$refs.contentIFrame.contentWindow.onresize = () => {
+      new ResizeObserver(() => {
         this.iFrameHeight =
           this.$refs.contentIFrame.contentDocument.body.scrollHeight;
-      };
+      }).observe(this.$refs.contentIFrame.contentDocument.body)
 
       this.$root.contentLoading = false;
     },