Я могу инициировать событие CSS в мобильном сафари на изменение ориентации iPhone?

Я пытаюсь выяснить, как изменить встроенную веб-страницу, когда пользователь поворачивает их телефон от портрета до альбомного режима - в основном для загрузки представления, которое лучше подходит для более широкого формата экрана. Действительно ли это возможно обойтись без вызова новой страницы с сервера, т.е. управлять им из самого CSS/Javascript?

Спасибо!

19
задан tbacos 22 February 2010 в 18:37
поделиться

5 ответов

Вы можете использовать свойство window.orientation . Его значение - это степень использования текущего режима просмотра. Вот краткий пример:

function updateOrientation()
{   
    var orientation=window.orientation;
    switch(orientation)
    {

        case 0:

                break;  

        case 90:
                break;

        case -90:   

                break;
    }

}

Вы можете использовать эту функцию для этого события:

window.onorientationchange=updateOrientation;

Надеюсь, что это поможет!

19
ответ дан 30 November 2019 в 03:38
поделиться

Мобильный браузер Safari поддерживает событие orientationchange а также свойство orientation окна, поэтому вы можете сделать что-то вроде:

window.onorientationchange = function() {
    switch(window.orientation) {
        case 0:   // Portrait
        case 180: // Upside-down Portrait
            // Javascript to setup Portrait view
            break;
        case -90: // Landscape: turned 90 degrees counter-clockwise
        case 90:  // Landscape: turned 90 degrees clockwise
            // Javascript to steup Landscape view
            break;
    }
}

Я бы добавил перевернутое, потому что в руководстве по человеческому интерфейсу iPad говорится, что вы должны поддерживать все ориентации, поэтому я ожидаю, что Safari на iPad (и, возможно, будущие версии iPhone) будут поддерживать это.

5
ответ дан 30 November 2019 в 03:38
поделиться
<body onorientationchange="updateOrientation();">

От: Руководство по веб-контенту Safari

0
ответ дан 30 November 2019 в 03:38
поделиться

Safari Mobile поддерживает события ориентации

0
ответ дан 30 November 2019 в 03:38
поделиться

Лучше не устанавливать свойство onorientationchange напрямую. Вместо этого используйте следующее:

window.addEventListener('orientationchange', function (evt) {
    switch(window.orientation) {
        case 0: // portrait
        case 180: // portrait
        case 90: // landscape
        case -90: // landscape
    }
}, false);
7
ответ дан 30 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: