Я создаю приложение jQTouch в PhoneGap для iPhone.Я боролся с этой проблемой в течение нескольких дней.Я видел предложенное решение Eventlistener несколько раз, но просто не смог заставить его работать.
В конце концов, я нашел другое решение.Он в основном проверяет ширину тела периодически, используя settimeout.Если ширина 320, то ориентация книжная, если 480, то альбомная.Затем, если ориентация изменилась со времени последней проверки, она запустит либо функцию портретного заполнения, либо функцию ландшафтного заполнения, где вы можете выполнять свои действия для каждой ориентации.
Код (обратите внимание, я знаю, что есть некоторыеповторение в коде, просто еще не удосужился урезать его!):
// get original orientation based on body width
deviceWidth = $('body').width();
if (deviceWidth == 320) {
currentOrientation = "portrait";
}
else if (deviceWidth == 480) {
currentOrientation = "landscape";
}
// fire a function that checks the orientation every x milliseconds
setInterval(checkOrientation, 500);
// check orientation
function checkOrientation() {
deviceWidth = $('body').width();
if (deviceWidth == '320') {
newOrientation = "portrait";
}
else if (deviceWidth == '480') {
newOrientation = "landscape";
}
// if orientation changed since last check, fire either the portrait or landscape function
if (newOrientation != currentOrientation) {
if (newOrientation == "portrait") {
changedToPortrait();
}
else if (newOrientation == "landscape") {
changedToLandscape();
}
currentOrientation = newOrientation;
}
}
// landscape stuff
function changedToLandscape() {
alert('Orientation has changed to Landscape!');
}
// portrait stuff
function changedToPortrait() {
alert('Orientation has changed to Portrait!');
}