Це пояснюється попередньою відповіддю. Найкраще рішення, яке я знайшов, - це зробити нешкідливий атрибут CSS, який з’являється лише у випадку, якщо буде виконано медіа-запит CSS3, а потім пройти тест JS для цього атрибута.
Так, наприклад, у CSS ви мали б:
@media screen only and (orientation:landscape)
{
// Some innocuous rule here
body
{
background-color: #fffffe;
}
}
@media screen only and (orientation:portrait)
{
// Some innocuous rule here
body
{
background-color: #fffeff;
}
}
Потім ви переходите до JavaScript (я використовую jQuery для притулок). Кольорові декларації можуть бути дивними, тому ви можете скористатися чимось іншим, але це найбезпечніший метод, який я знайшов для його тестування. Потім ви можете просто скористатися подією зміни розміру, щоб забрати при перемиканні. Зберіть все це для:
function detectOrientation(){
// Referencing the CSS rules here.
// Change your attributes and values to match what you have set up.
var bodyColor = $("body").css("background-color");
if (bodyColor == "#fffffe") {
return "landscape";
} else
if (bodyColor == "#fffeff") {
return "portrait";
}
}
$(document).ready(function(){
var orientation = detectOrientation();
alert("Your orientation is " + orientation + "!");
$(document).resize(function(){
orientation = detectOrientation();
alert("Your orientation is " + orientation + "!");
});
});
Найкращою мірою є те, що на момент написання цієї відповіді, схоже, це не впливає на інтерфейси робочого столу, оскільки вони (як правило) не передають жодного аргументу для орієнтації на сторінку.