Android 3.0 Web Dev - начальная проблема ориентации - PullRequest
0 голосов
/ 06 апреля 2011

Я заметил проблему с тем, как Android (на данный момент и 2.2 и 3.0) устанавливает переменную javascript window.orientation. При первоначальной загрузке веб-страницы все работает нормально. Window.orientation правильно настроен на ориентацию, в которой находится устройство (0, 90, -90, 180). Проблема возникает, когда вы запускаете новую страницу с помощью вызова javascript window.open ("newpage"). Когда открывается новая страница, значение window.orientation всегда равно 0, независимо от того, в какой ориентации вы находитесь. Ниже приведен пример веб-страницы, которая может продемонстрировать это:

<button onclick="window.open('AndroidTesting.html')">Click Me</button>

    <script type="text/javascript">

    orientationEvent = "resize";
    window.addEventListener(orientationEvent, function () {
        setTimeout(displayChange(), 0);
    }, false);

        var myPageWidth = 0;
        var myPageHeight = 0;

        var lastOrientation = "Landscape";

        function displayChange() {

            if ((window.orientation == 90) || (window.orientation == -90)) {
                lastOrientation = "Portrait";
            }
            if ((window.orientation == 0) || (window.orientation == 180)) {
                lastOrientation = "Landscape";
            }

            document.getElementById('storydiv').innerHTML = "In " + lastOrientation + " mode";

        }

    </script>

Когда вы нажимаете кнопку, чтобы открыть ту же страницу в новой вкладке, ориентация оказывается неправильной, если вы не находитесь в режиме по умолчанию (в Android 2.2 режим по умолчанию или 0 в вертикальной ориентации в Android 3.0, 0 в горизонтальной ориентации), но как только вы перешли в другой режим, а затем обратно, ориентация работает.

Кто-нибудь видел эту проблему раньше? Есть ли обходной путь, или это просто проблема, потому что я делаю что-то не так?

Спасибо за помощь!

1 Ответ

0 голосов
/ 30 января 2012

Не знаю, хороший ли это подход, но на Android кажется, что screen.width и screen.height зависят от ориентации устройства.

if(android){
    if(screen.width>screen.height){
        return 90;
    }else{
        return 0;
    }
}else{
    return window.orientation;
}

Основная проблема этого решения заключается в обнаружении ОС.

...