--- 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 );