Чистое и простое решение существует, потому что вы используете Appetize, у которого есть API, доступный для этой цели.Если бы в iframe был другой сайт без API, сообщающий об ориентации устройства, решение стало бы менее надежным.
После того, как вы запустили сеанс Appetize в iframe, вы можете получать сообщения через API Appetize. Appetize docs указывает, что сообщение orientationChanged
будет отправлено родителю при повороте устройства.Они услужливо предоставляют скрипку , в которой вы можете проверить это.Откройте консоль браузера, и после нажатия кнопки «Нажать для воспроизведения» при повороте устройства с помощью кнопок поворота вправо или влево на консоли отобразится сообщение о том, является ли устройство книжным или альбомным.
Это означает, что вы можете прослушивать сообщения из iframe, а когда вы получаете сообщение orientationChanged
, вы можете соответствующим образом изменить его размер.
Например (это просто адаптация кода из скрипты аппетита):
var iframe = document.getElementById('iframeid');
var messageEventHandler = function(event){
if(event.data && event.data.type == 'orientationChanged'){
if (event.data.data == 'landscape') {
iframe.height = '416px';
iframe.width = '870px';
} else if (event.data.data == 'portrait') {
iframe.height = '870px';
iframe.width = '416px';
}
}
};
window.addEventListener('message', messageEventHandler, false);