Bu, önceki bir cevabı genişletir. Bulduğum en iyi çözüm, yalnızca bir CSS3 medya sorgusu karşılandığında görünen ve daha sonra bu özellik için JS testine sahip olan, zararsız bir CSS özelliği yapmaktır.
Örneğin, CSS'de:
@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;
}
}
Daha sonra JavaScript'e gidin (eğlenceler için jQuery kullanıyorum). Renk bildirimleri garip olabilir, bu yüzden başka bir şey kullanmak isteyebilirsiniz, ancak bu test etmek için bulduğum en kusursuz yöntemdir. Daha sonra anahtarlamayı almak için resize olayını kullanabilirsiniz. Hepsini bir araya getirin:
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 + "!");
});
});
Bunun en iyi yanı, bu yanıtı yazdığımdan beri, masaüstü arayüzleri üzerinde herhangi bir etkisi olmadığı, çünkü (genellikle) sayfaya yönlendirme için herhangi bir argüman iletmedikleri (görünmedikleri).