Это не так просто: я тоже много поиграл :)
Сначала вы могли заметить, что некоторые устройства Android (например, вкладка samsung galaxy) будут обнаружены как портретные, пока они в альбомной ориентации и наоборот.,Итак, сначала вам нужно создать функции для определения ориентации на основе screen.width и screen.height, если ipad не обнаружен (ipad всегда будет правильно отображать ориентацию. Мне все равно это неинтересно).
Затем через некоторое время вы должны запустить функцию обратного вызова, чтобы изменение ориентации было обнаружено с таймаутом, чтобы позволить всей среде измениться в соответствии с новой ориентацией.
Так вот, как я это делаю ... радподелитесь:)
function orientation_changed ()
{
if ( is_portrait() )
{
//do something
}
else if ( is_landscape() )
{
// do something else
}
clearTimeout(window.t);
delete window.t;
}
window.t = undefined;
window.onorientationchange = function (event)
{
window.t = setTimeout('orientation_changed();', 250);
}
function is_landscape()
{
var uagent = navigator.userAgent.toLowerCase();
if ( uagent.search('ipad') > -1 )
{
var r = ( window.orientation == 90 || window.orientation == -90 );
}
else
{
var r = ( screen.width > screen.height );
}
return r;
}
function is_portrait()
{
var uagent = navigator.userAgent.toLowerCase();
if ( uagent.search('ipad') > -1 )
{
var r = ( window.orientation == 0 || window.orientation == 180 );
}
else
{
var r = ( screen.width < screen.height );
}
return r;
}