diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/js/wp-embed-template.js --- a/wp/wp-includes/js/wp-embed-template.js Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-includes/js/wp-embed-template.js Tue Sep 27 16:37:53 2022 +0200 @@ -18,6 +18,13 @@ }, '*' ); } + /** + * Send the height message to the parent window. + */ + function sendHeightMessage() { + sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) ); + } + function onLoad() { if ( loaded ) { return; @@ -138,13 +145,11 @@ } // Send this document's height to the parent (embedding) site. - sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) ); + sendHeightMessage(); // Send the document's height again after the featured image has been loaded. if ( featured_image ) { - featured_image.addEventListener( 'load', function() { - sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) ); - } ); + featured_image.addEventListener( 'load', sendHeightMessage ); } /** @@ -184,9 +189,36 @@ clearTimeout( resizing ); - resizing = setTimeout( function () { - sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) ); - }, 100 ); + resizing = setTimeout( sendHeightMessage, 100 ); + } + + /** + * Message handler. + * + * @param {MessageEvent} event + */ + function onMessage( event ) { + var data = event.data; + + if ( ! data ) { + return; + } + + if ( event.source !== window.parent ) { + return; + } + + if ( ! ( data.secret || data.message ) ) { + return; + } + + if ( data.secret !== secret ) { + return; + } + + if ( 'ready' === data.message ) { + sendHeightMessage(); + } } /** @@ -212,5 +244,6 @@ document.addEventListener( 'DOMContentLoaded', onLoad, false ); window.addEventListener( 'load', onLoad, false ); window.addEventListener( 'resize', onResize, false ); + window.addEventListener( 'message', onMessage, false ); } })( window, document );