2012-12-13 17 views
8

के अभिविन्यास को निर्धारित करने के लिए जावास्क्रिप्ट एल्गोरिदम हम गोलियों के लिए विकसित एक HTML5/जावास्क्रिप्ट ऐप बना रहे हैं, और हम अपनी स्क्रीन को लैंडस्केप बनाम चित्र में अलग-अलग रखना चाहते हैं।टैबलेट

मूल रूप से, हम अभिविन्यास परिवर्तन अधिसूचनाओं को कैप्चर कर रहे थे, और वर्तमान अभिविन्यास (आमतौर पर 0, 90, -90 या 180 डिग्री के रूप में रिपोर्ट किए गए) को ट्रैक रखते हुए - this question देखें)। दुर्भाग्यवश, विभिन्न डिवाइस different orientations as "0" की रिपोर्ट करते हैं। उस लिंक का तर्क है कि यह एक बग है, लेकिन कुछ सबूत हैं कि यह काम-डिजाइन के रूप में काम कर रहा है - उदाहरण के लिए, this article बताता है कि "परिदृश्य" डिफ़ॉल्ट अभिविन्यास है और वे डिवाइस लैंडस्केप मोड में होने पर "0" के अभिविन्यास की रिपोर्ट करते हैं ।

हमने अगली बार वास्तविक स्क्रीन आकार को देखने की कोशिश की, यह मानते हुए कि जब चौड़ाई ऊंचाई से अधिक थी, तो हम लैंडस्केप मोड में थे। लेकिन ऑन-स्क्रीन कीबोर्ड प्रदर्शित होने पर यह एल्गोरिदम भ्रमित हो जाता है - जब कीबोर्ड प्रदर्शित होता है, तो दृश्य क्षेत्र के आयाम वापस आते हैं। जब डिवाइस पोर्ट्रेट मोड में सख्ती से बोल रहा है, लेकिन कुंजीपटल द्वारा अस्पष्ट नहीं स्क्रीन का हिस्सा लंबा है, यह लंबा है।

this question की प्रतिक्रिया काफी पुरानी है। क्या यह अभी भी सबसे अच्छा जवाब है? क्या किसी के पास एक अच्छा एल्गोरिदम है जो कीबोर्ड दृश्यता को ध्यान में रखता है?

+0

कैसे उन्मुखीकरण परिवर्तन अधिसूचना पर कब्जा है, लेकिन वास्तविक स्क्रीन आकार से वर्तमान अभिविन्यास करने के बारे में? (यह कोने मामले में विफल रहता है जहां उपयोगकर्ता पोर्ट्रेट मोड में कीबोर्ड खोलता है, परिदृश्य में जाता है, और पोर्ट्रेट पर वापस जाता है।) –

+3

क्या यह मोबाइल वेब ऐप/साइट के लिए है? यदि ऐसा है तो मीडिया के प्रश्नों को देखें और चारों ओर सामान बदलने के लिए चौड़ाई के खिलाफ परीक्षण करें। यदि आपको जावास्क्रिप्ट कोड में इसका मूल्यांकन करने की आवश्यकता है, तो आम तौर पर डिवाइस की चौड़ाई आपको भी बता सकती है (देखने के लिए चौड़ाई को ट्रैक करें जो लैंडस्केप बनाम चित्र जानने के लिए बड़ा है। ऊंचाई की जांच न करें)। – agmcleod

+1

आपका उपयोग-मामला क्या है, वैसे भी? ऐसा लगता है कि बस '<मीडिया नाम = "व्यूपोर्ट" मूल्य = "चौड़ाई = डिवाइस-चौड़ाई"> 'और' स्क्रीन पर मीडिया क्वेरी करना और (न्यूनतम-चौड़ाई: 500 पीएक्स) {/ * लैंडस्केप शैलियों * /} ' चाल (और डेस्कटॉप पर काम) करो। –

उत्तर

4

http://jsfiddle.net/jjc39/

इस प्रयास करें:

<span id="orientation">orientation</span>​ 

$(document).ready(checkOrientation); 
$(window).resize(checkOrientation); 

function checkOrientation() { 
    var orientation = "Portrait"; 
    var screenWidth = $(window).width(); 
    var screenHeight = $(window).height(); 
    if (screenWidth > screenHeight) { 
     orientation = "Landscape"; 
    } 
    $("#orientation").html(orientation); 
}​ 
+0

यह बहुत साफ है कि मेरे पास क्या था। हालांकि, कुंजीपटल मामले पर यह अभी भी यात्रा करता है। देखें: http://blog.bcholmes.org/wp-content/uploads/2012/12/jsfiddleOnTablet.png – bcholmes

+0

निश्चित रूप से करता है। Jsfiddle में, आप एक आईफ्रेम के अंदर हैं जो कुंजीपटल को समायोजित करने के लिए आकार बदल जाता है। मुझे आश्चर्य है कि यह तब भी होगा यदि आपके पास $ (विंडो) आयामों का मूल्यांकन करने के लिए पूर्ण बाहरी निकाय टैग था। –

+0

मैं कुछ फ्रेम-मुक्त प्रयोगों को आजमाउंगा और देखूंगा। एक बार फिर धन्यवाद। – bcholmes

संबंधित मुद्दे