Ini memperluas jawaban sebelumnya. Solusi terbaik yang saya temukan adalah membuat atribut CSS tidak berbahaya yang hanya muncul jika permintaan media CSS3 terpenuhi, dan kemudian lakukan uji JS untuk atribut itu.
Jadi misalnya, dalam CSS Anda akan memiliki:
@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;
}
}
Anda kemudian pergi ke JavaScript (Saya menggunakan jQuery untuk funsies). Deklarasi warna mungkin aneh, jadi Anda mungkin ingin menggunakan sesuatu yang lain, tetapi ini adalah metode yang paling mudah saya temukan untuk mengujinya. Anda kemudian dapat menggunakan acara mengubah ukuran untuk mengambil beralih. Gabungkan semuanya untuk:
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 + "!");
});
});
Bagian terbaik dari ini adalah bahwa pada saat saya menulis jawaban ini, tampaknya tidak berpengaruh pada antarmuka desktop, karena mereka (umumnya) tidak (tampaknya) memberikan argumen untuk orientasi ke halaman.