Может кто-нибудь, пожалуйста, сообщите мне правильный код для события изменения ориентации по jquery mobile в телефонном разрыве? Где и как реализовать эту функцию orientChange?
Выполнение события изменения ориентации с помощью jQuery mobile в телефонном разрыве
Ответ 1
$(window).bind('orientationchange', _orientationHandler);
то в функции _orientationHandler
есть что-то вроде:
if(event.orientation){
if(event.orientation == 'portrait'){
//do something
}
else if(event.orientation == 'landscape') {
//do something
}
}
Ответ 2
$(window).bind( 'orientationchange', function(e){
if ($.event.special.orientationchange.orientation() == "portrait") {
//Do whatever in portrait mode
} else {
//Do Whatever in landscape mode
}
});
Вы можете добавить событие изменения размера в параметр события функции bind, если вы настроите iOS, и изменение ориентации не работает. Поскольку изменение ориентации также вызывает событие изменения размера.
Ответ 3
Следующий код должен работать во всех браузерах, чтобы обнаружить изменение ориентации. Он не использует событие jquery mobile, но, похоже, работает для большинства устройств.
1. var isIOS = /safari/g.test(navigator.userAgent.toLowerCase());
2. var ev = isIOS ? 'orientationchange' : 'resize';
3. var diff = (window.innerWidth-window.innerHeight);
4. $(window).bind(ev,function(){
5. setTimeout(function(){
6. if(diff*((window.innerWidth-window.innerHeight)) < 0)
7. orientationChanged();
8. },500);
9. });
В строке 2 выполняется событие изменения размера для любых браузеров, не относящихся к сафари, поскольку другие браузеры в других устройствах принимают событие изменения размера более последовательно, чем событие изменения ориентации. http://www.quirksmode.org/m/table.html
Строка 5 выполняет проверку тайм-аута, так как некоторые из встроенных браузеров Android не сразу берут новую ширину.
Линия 6 Для изменения ориентации должно происходить отрицательное отрицание результата разницы старой и новой высоты и ширины.
Ответ 4
Я использую это в своих мобильных шаблонах, поскольку событие changechange не запускалось на iOS 7 Safari:
// ORIENTATION CHANGE TRICK
var _orientation = window.matchMedia("(orientation: portrait)");
_orientation.addListener(function(m) {
if (m.matches) {
// Changed to portrait
$('html').removeClass('orientation-landscape').addClass('orientation-portrait');
} else {
// Changed to landscape
$('html').removeClass('orientation-portrait').addClass('orientation-landscape');
}
});
// (event is not triggered in some browsers)
$(window).on('orientationchange', function(e) {
if (e.orientation) {
if (e.orientation == 'portrait') {
$('html').removeClass('orientation-landscape').addClass('orientation-portrait');
} else if (e.orientation == 'landscape') {
$('html').removeClass('orientation-portrait').addClass('orientation-landscape');
}
}
}).trigger('orientationchange');
// END TRICK