Можно ли обнаружить изменение ориентации браузера на iPad или Galaxy Tab с помощью javascript? Я думаю, что это возможно с использованием запросов css media.
Обнаружить изменение ориентации с помощью javascript
Ответ 1
ОБНОВИТЬ:
Вы можете проверить
или простой JS один:
window.addEventListener("orientationchange", function() {
alert(window.orientation);
}, false);
window.addEventListener("orientationchange", function() {
alert("the orientation of the device is now " + screen.orientation.angle);
});
Старый ответ
http://www.nczonline.net/blog/2010/04/06/ipad-web-development-tips/
Safari на iPad поддерживает свойство window.orientation, поэтому при необходимости вы можете использовать его, чтобы определить, находится ли пользователь в горизонтальном или вертикальном режиме. Как напоминание об этой функциональности:
window.orientation is 0 when being held vertically
window.orientation is 90 when rotated 90 degrees to the left (horizontal)
window.orientation is -90 when rotated 90 degrees to the right (horizontal)
Существует также событие directionalchange, которое запускается в объекте окна при повороте устройства.
Вы также можете использовать медиазапросы CSS, чтобы определить, находится ли iPad в вертикальной или горизонтальной ориентации, например:
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
<script type="text/javascript">
var updateLayout = function() {
if (window.innerWidth != currentWidth) {
currentWidth = window.innerWidth;
var orient = (currentWidth == 320) ? "profile" : "landscape";
document.body.setAttribute("orient", orient);
window.scrollTo(0, 1);
}
};
iPhone.DomLoad(updateLayout);
setInterval(updateLayout, 400);
</script>
Ответ 2
Вы можете использовать событие changechange следующим образом:
window.addEventListener('orientationchange', function(){
/* update layout per new orientation */
});
Ответ 3
window.orientation - это то, что вы ищете. там также событие onOrientationChange работает для android, iphone и, я в основном уверен, для ipad
Ответ 4
Добавляя к ответу @mplungjan, я нашел лучшие результаты, используя webkit "native" (я действительно не называю это) событие, deviceorientation.
В сети Mozilla Developer у них есть хорошее объяснение того, как нормализовать между webkit и Gecko, которые помогли мне решить эту проблему.
Ответ 5
Вы можете использовать mediaMatch для оценки запросов к мультимедиа CSS, например.
window
.matchMedia('(orientation: portrait)')
.addListener(function (m) {
if (m.matches) {
// portrait
} else {
// landscape
}
});
Запрос мультимедийных сообщений CSS перед orientationchange
. Если вы хотите захватить конец события (когда ротация завершена), см. высота мобильного просмотра после изменения ориентации.
Ответ 6
Простой в использовании фрагмент:
function doOnOrientationChange()
{
switch(window.orientation)
{
case -90:
case 90:
// alert('landscape');
$('#portrait').css({display:'none'});
$('#landscape').css({display:'block'});
break;
default:
// alert('portrait');
$('#portrait').css({display:'block'});
$('#landscape').css({display:'none'});
break;
}
}
window.addEventListener('orientationchange', doOnOrientationChange);
// First launch
doOnOrientationChange();
Ответ 7
Из " Кросс-устройства, кросс-браузерное обнаружение портрета и пейзажа "
Это о том, чтобы узнать, находится ли мобильное устройство в портретном или ландшафтном режиме; вам не нужно заботиться о его ориентации. Насколько вы знаете, если вы держите свой iPad вверх ногами, он находится в портретном режиме.
$(window).bind("resize", function(){
screenOrientation = ($(window).width() > $(window).height())? 90 : 0;
});
90 означает пейзаж, 0 означает портрет, кросс-браузер, кросс-устройство.
Событие window.onresize доступно везде и всегда происходит в нужное время; никогда не рано, никогда не поздно. На самом деле, размер экрана также всегда точен.
Версия JavaScript будет такой, поправьте меня, пожалуйста, если я ошибаюсь.
function getScreenOrientation() {
screenOrientation = window.outerWidth > window.outerHeight ? 90 : 0;
console.log("screenOrientation = " + screenOrientation);
}
window.addEventListener("resize", function(event) {
getScreenOrientation();
});
getScreenOrientation();