Dies erweitert eine vorherige Antwort. Die beste Lösung, die ich gefunden habe, besteht darin, ein harmloses CSS-Attribut zu erstellen, das nur angezeigt wird, wenn eine CSS3-Medienabfrage erfüllt ist, und dann den JS-Test für dieses Attribut durchzuführen.
So hätten Sie beispielsweise im 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;
}
}
Sie gehen dann zu JavaScript (ich verwende jQuery für Funsies). Farbdeklarationen mögen seltsam sein, daher möchten Sie vielleicht etwas anderes verwenden, aber dies ist die narrensicherste Methode, die ich zum Testen gefunden habe. Sie können dann einfach das Größenänderungsereignis verwenden, um das Umschalten zu erfassen. Alles zusammen für:
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 + "!");
});
});
Das Beste daran ist, dass diese Antwort zum Zeitpunkt des Schreibens keine Auswirkungen auf Desktop-Schnittstellen zu haben scheint, da sie (im Allgemeinen) kein Argument zur Orientierung an die Seite übergeben (scheinen).