wp/wp-includes/js/wp-embed.js
changeset 19 3d72ae0968f4
parent 9 177826044cd9
child 21 48c4eec2b7e6
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
    25 
    25 
    26 	if ( !! window.wp.receiveEmbedMessage ) {
    26 	if ( !! window.wp.receiveEmbedMessage ) {
    27 		return;
    27 		return;
    28 	}
    28 	}
    29 
    29 
       
    30 	/**
       
    31 	 * Receive embed message.
       
    32 	 *
       
    33 	 * @param {MessageEvent} e
       
    34 	 */
    30 	window.wp.receiveEmbedMessage = function( e ) {
    35 	window.wp.receiveEmbedMessage = function( e ) {
    31 		var data = e.data;
    36 		var data = e.data;
    32 
    37 
    33 		if ( ! data ) {
    38 		if ( ! data ) {
    34 			return;
    39 			return;
   100 			isIE11 = !!navigator.userAgent.match( /Trident.*rv:11\./ ),
   105 			isIE11 = !!navigator.userAgent.match( /Trident.*rv:11\./ ),
   101 			iframes = document.querySelectorAll( 'iframe.wp-embedded-content' ),
   106 			iframes = document.querySelectorAll( 'iframe.wp-embedded-content' ),
   102 			iframeClone, i, source, secret;
   107 			iframeClone, i, source, secret;
   103 
   108 
   104 		for ( i = 0; i < iframes.length; i++ ) {
   109 		for ( i = 0; i < iframes.length; i++ ) {
       
   110 			/** @var {IframeElement} */
   105 			source = iframes[ i ];
   111 			source = iframes[ i ];
   106 
   112 
   107 			if ( ! source.getAttribute( 'data-secret' ) ) {
   113 			secret = source.getAttribute( 'data-secret' );
       
   114 			if ( ! secret ) {
   108 				/* Add secret to iframe */
   115 				/* Add secret to iframe */
   109 				secret = Math.random().toString( 36 ).substr( 2, 10 );
   116 				secret = Math.random().toString( 36 ).substr( 2, 10 );
   110 				source.src += '#?secret=' + secret;
   117 				source.src += '#?secret=' + secret;
   111 				source.setAttribute( 'data-secret', secret );
   118 				source.setAttribute( 'data-secret', secret );
   112 			}
   119 			}
   115 			if ( ( isIE10 || isIE11 ) ) {
   122 			if ( ( isIE10 || isIE11 ) ) {
   116 				iframeClone = source.cloneNode( true );
   123 				iframeClone = source.cloneNode( true );
   117 				iframeClone.removeAttribute( 'security' );
   124 				iframeClone.removeAttribute( 'security' );
   118 				source.parentNode.replaceChild( iframeClone, source );
   125 				source.parentNode.replaceChild( iframeClone, source );
   119 			}
   126 			}
       
   127 
       
   128 			/*
       
   129 			 * Let post embed window know that the parent is ready for receiving the height message, in case the iframe
       
   130 			 * loaded before wp-embed.js was loaded. When the ready message is received by the post embed window, the
       
   131 			 * window will then (re-)send the height message right away.
       
   132 			 */
       
   133 			source.contentWindow.postMessage( {
       
   134 				message: 'ready',
       
   135 				secret: secret
       
   136 			}, '*' );
   120 		}
   137 		}
   121 	}
   138 	}
   122 
   139 
   123 	if ( supportedBrowser ) {
   140 	if ( supportedBrowser ) {
   124 		window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );
   141 		window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );