equal
deleted
inserted
replaced
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 ); |