Я заметил проблему с тем, как 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 в горизонтальной ориентации), но как только вы перешли в другой режим, а затем обратно, ориентация работает.
Кто-нибудь видел эту проблему раньше? Есть ли обходной путь, или это просто проблема, потому что я делаю что-то не так?
Спасибо за помощь!