นี่เป็นการขยายคำตอบก่อนหน้า ทางออกที่ดีที่สุดที่ฉันพบคือการสร้างแอตทริบิวต์ 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 + "!");
});
});
ส่วนที่ดีที่สุดของเรื่องนี้ก็คือเมื่อฉันเขียนคำตอบนี้ดูเหมือนว่าจะไม่มีผลกระทบใด ๆ ต่อส่วนต่อประสานเดสก์ท็อปเนื่องจากพวกเขา (โดยทั่วไป) ไม่ (ดูเหมือน) จะผ่านการโต้แย้งเพื่อวางแนวหน้ากระดาษ