/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/fixtures/served/iframe.html
81 строка
2 KB
Julian Hollmann
✨ Consent: Pass consent string and metadata to amp-iframe (#29636)
09 сен 2020, 20:58
Не верифицирован
09 сен 2020, 20:58
fb7291c
Код
Авторство
О чём код?
<!doctype html> <body style="background-color: red"> iframe <script> parent./*OK*/postMessage('loaded-iframe', '*'); parent.parent./*OK*/postMessage('loaded-iframe', '*'); function getAmpWindow(sentinel) { var match = sentinel.match(/^(\d+)-\d+$/); // If we have a proper 3P sentinel then use it to find the AMP window. if (match) { // Depth is measured from window.top. var depth = Number(match[1]); var ancestors = []; for (var win = window; win && win != win.parent; win = win.parent) { // Add window keeping the top-most one at the front. ancestors.unshift(win.parent); } return ancestors[depth]; } else { // Assume our parent is AMP. return parent; } } window.addEventListener('message', function(event) { var sentinel, msg; if (event.data) { if (event.data.type === 'requestHeight') { if (event.data.is3p) { sentinel = event.data.sentinel; } else { sentinel = 'amp'; } getAmpWindow(sentinel)./*OK*/postMessage( { sentinel: sentinel, type: 'embed-size', height: event.data.height, width: event.data.width, }, '*'); } else if (event.data.type === 'subscribeToEmbedState') { if (event.data.is3p) { sentinel = event.data.sentinel; } else { sentinel = 'amp'; } getAmpWindow(sentinel)./*OK*/postMessage( { sentinel: sentinel, type: 'send-embed-state', }, '*'); } else if (event.data.type === 'requestSendConsentState') { sentinel = 'amp'; getAmpWindow(sentinel)./*OK*/postMessage( { sentinel, type: 'send-consent-data', }, '*'); } else if (event.data.type === 'requestPymjsHeight') { msg = [ 'pym', 'example', 'height', event.data.height ].join( 'xPYMx' ); if (event.data.is3p) { sentinel = event.data.sentinel; } else { sentinel = 'amp'; } getAmpWindow(sentinel)./*OK*/postMessage( msg, '*'); } else if (event.data.type === 'requestPymjsWidth' || 1) { msg = [ 'pym', 'example', 'width', event.data.width ].join( 'xPYMx' ); if (event.data.is3p) { sentinel = event.data.sentinel; } else { sentinel = 'amp'; } getAmpWindow(sentinel)./*OK*/postMessage( msg, '*'); } } }); </script> </body>