wp/wp-includes/js/wp-embed-template.js
changeset 19 3d72ae0968f4
parent 18 be944660c56a
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
    14 		window.parent.postMessage( {
    14 		window.parent.postMessage( {
    15 			message: message,
    15 			message: message,
    16 			value: value,
    16 			value: value,
    17 			secret: secret
    17 			secret: secret
    18 		}, '*' );
    18 		}, '*' );
       
    19 	}
       
    20 
       
    21 	/**
       
    22 	 * Send the height message to the parent window.
       
    23 	 */
       
    24 	function sendHeightMessage() {
       
    25 		sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
    19 	}
    26 	}
    20 
    27 
    21 	function onLoad() {
    28 	function onLoad() {
    22 		if ( loaded ) {
    29 		if ( loaded ) {
    23 			return;
    30 			return;
   136 		if ( window.self === window.top ) {
   143 		if ( window.self === window.top ) {
   137 			return;
   144 			return;
   138 		}
   145 		}
   139 
   146 
   140 		// Send this document's height to the parent (embedding) site.
   147 		// Send this document's height to the parent (embedding) site.
   141 		sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
   148 		sendHeightMessage();
   142 
   149 
   143 		// Send the document's height again after the featured image has been loaded.
   150 		// Send the document's height again after the featured image has been loaded.
   144 		if ( featured_image ) {
   151 		if ( featured_image ) {
   145 			featured_image.addEventListener( 'load', function() {
   152 			featured_image.addEventListener( 'load', sendHeightMessage );
   146 				sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
       
   147 			} );
       
   148 		}
   153 		}
   149 
   154 
   150 		/**
   155 		/**
   151 		 * Detect clicks to external (_top) links.
   156 		 * Detect clicks to external (_top) links.
   152 		 */
   157 		 */
   182 			return;
   187 			return;
   183 		}
   188 		}
   184 
   189 
   185 		clearTimeout( resizing );
   190 		clearTimeout( resizing );
   186 
   191 
   187 		resizing = setTimeout( function () {
   192 		resizing = setTimeout( sendHeightMessage, 100 );
   188 			sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
   193 	}
   189 		}, 100 );
   194 
       
   195 	/**
       
   196 	 * Message handler.
       
   197 	 *
       
   198 	 * @param {MessageEvent} event
       
   199 	 */
       
   200 	function onMessage( event ) {
       
   201 		var data = event.data;
       
   202 
       
   203 		if ( ! data ) {
       
   204 			return;
       
   205 		}
       
   206 
       
   207 		if ( event.source !== window.parent ) {
       
   208 			return;
       
   209 		}
       
   210 
       
   211 		if ( ! ( data.secret || data.message ) ) {
       
   212 			return;
       
   213 		}
       
   214 
       
   215 		if ( data.secret !== secret ) {
       
   216 			return;
       
   217 		}
       
   218 
       
   219 		if ( 'ready' === data.message ) {
       
   220 			sendHeightMessage();
       
   221 		}
   190 	}
   222 	}
   191 
   223 
   192 	/**
   224 	/**
   193 	 * Re-get the secret when it was added later on.
   225 	 * Re-get the secret when it was added later on.
   194 	 */
   226 	 */
   210 		getSecret();
   242 		getSecret();
   211 		document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js';
   243 		document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js';
   212 		document.addEventListener( 'DOMContentLoaded', onLoad, false );
   244 		document.addEventListener( 'DOMContentLoaded', onLoad, false );
   213 		window.addEventListener( 'load', onLoad, false );
   245 		window.addEventListener( 'load', onLoad, false );
   214 		window.addEventListener( 'resize', onResize, false );
   246 		window.addEventListener( 'resize', onResize, false );
       
   247 		window.addEventListener( 'message', onMessage, false );
   215 	}
   248 	}
   216 })( window, document );
   249 })( window, document );