व्यूपोर्ट ओरिएंटेशन का पता लगाएं, अगर ओरिएंटेशन पोर्ट्रेट डिस्प्ले अलर्ट मैसेज है जो निर्देशों के उपयोगकर्ता को सलाह देता है


195

मैं विशेष रूप से मोबाइल उपकरणों के लिए एक वेबसाइट बना रहा हूं। विशेष रूप से एक पृष्ठ है जो परिदृश्य मोड में सबसे अच्छा देखा जाता है।

क्या यह पता लगाने का एक तरीका है कि क्या उस पृष्ठ पर जाने वाला उपयोगकर्ता इसे पोर्ट्रेट मोड में देख रहा है और यदि ऐसा है, तो उपयोगकर्ता को सूचित करने वाला एक संदेश प्रदर्शित करें कि पृष्ठ को लैंडस्केप मोड में सबसे अच्छा देखा गया है? यदि उपयोगकर्ता इसे पहले से ही लैंडस्केप मोड में देख रहा है तो कोई संदेश नहीं आएगा।

इसलिए मूल रूप से, मैं चाहता हूं कि साइट व्यूपोर्ट ओरिएंटेशन का पता लगाए, यदि ओरिएंटेशन पोर्ट्रेट है , तो उपयोगकर्ता को सलाह देते हुए एक अलर्ट संदेश प्रदर्शित करें कि यह पृष्ठ लैंडस्केप मोड में सबसे अच्छा है।

जवाबों:


274
if(window.innerHeight > window.innerWidth){
    alert("Please use Landscape!");
}

jQuery मोबाइल में एक घटना है जो इस संपत्ति के परिवर्तन को संभालती है ... यदि आप चेतावनी देना चाहते हैं कि क्या कोई बाद में घूमता है - orientationchange

इसके अलावा, कुछ गुगली करने के बाद, बाहर की जाँच करें window.orientation(जो मुझे विश्वास है कि डिग्री में मापा जाता है ...)


6
नहीं दुर्भाग्य से नहीं। हालाँकि, निम्न स्क्रिप्ट ने काम किया: अगर (window.innerHeight> window.innerWidth) {चेतावनी ("परिदृश्य में देखें"); }
Dan

8
मैं इस समस्या का सामना कर रहा था। यह भी खूब रही। बहुत आसन।

76
कई उपकरणों पर, जब कीबोर्ड दिखाया जाता है, तो उपलब्ध चौड़ाई ऊंचाई से अधिक होगी, गलत तरीके से लैंडस्केप ओरिएंटेशन देगा।
पियरे

1
यह काम नहीं करता है अगर orientationchangeघटना के साथ संयुक्त । यह नई अभिविन्यास के बजाय पुराने अभिविन्यास को दिखाएगा। यह उत्तरorientationchange घटना के साथ संयुक्त रूप से काम करता है ।
डोनाल्ड डक


163

तुम भी उपयोग कर सकते हैं window.matchMedia, जो मैं उपयोग करता हूं और पसंद करता हूं क्योंकि यह सीएसएस सिंटैक्स जैसा दिखता है:

if (window.matchMedia("(orientation: portrait)").matches) {
   // you're in PORTRAIT mode
}

if (window.matchMedia("(orientation: landscape)").matches) {
   // you're in LANDSCAPE mode
}

IPad 2 पर परीक्षण किया गया।


3
उस सुविधा के लिए समर्थन थोड़े कमजोर है, हालांकि: caniuse.com/#feat=matchmedia
Ashitaka

2
एंड्रॉइड के लिए फ़ायरफ़ॉक्स में मेरे लिए DOM तैयार इवेंट के बाद ही ठीक से काम करता है।
उलटा

13
इसके लिए समर्थन अब बहुत मजबूत है। यह अब और अधिक मजबूत जवाब लगता है तो स्वीकार किया जाता है।
जोन्क

2
इस से सावधान रहें (लिंक) समाधान stackoverflow.com/questions/8883163/…
dzv3

2
यह अब सही उत्तर है। इस सुविधा में सभी प्रासंगिक ब्राउज़रों के लिए पूर्ण समर्थन है।
तेलुगु

97

डेविड वॉल्श के पास एक बेहतर और पॉइंट अप्रोच है।

// Listen for orientation changes
window.addEventListener("orientationchange", function() {
  // Announce the new orientation number
  alert(window.orientation);
}, false);

इन परिवर्तनों के दौरान, window.orientation property बदल सकती है। 0 के मान का मतलब है पोर्ट्रेट व्यू, -90 का मतलब है कि डिवाइस दायीं ओर घुमाया गया लैंडस्केप है, और 90 का मतलब है कि डिवाइस बाईं ओर घुमाया गया है।

http://davidwalsh.name/orientation-change


2
Nexus 10 पर, और मैं अन्य Android 10 "टैबलेट के बारे में नहीं जानता, मान पीछे की ओर हैं। Ie 0 तब लौटाया जाता है जब डिवाइस लैंडस्केप में हो, पोर्ट्रेट नहीं। ऊपर दिए गए tobyodavies का जवाब सभी डिवाइसों पर अच्छी तरह से काम करता है। ' ve का परीक्षण
नाथन

8
ओरिएंटेशन 0 को डिवाइस का "प्राकृतिक" अभिविन्यास माना जाता है, और इस प्रकार विक्रेता-निर्भर है। यह चित्र या लैंडस्केप हो सकता है ...
पियरे

iframe में ipad पर कुछ भी सचेत नहीं किया
Darius.V

2
यह डिवाइस के ओरिएंटेशन मॉड का पता लगाने के लिए अच्छा समाधान नहीं है। क्योंकि वे वापसी मूल्य प्राकृतिक उपकरण अभिविन्यास पर निर्भर करते हैं। उदाहरण सैमसंग 7 'टैबलेट पोर्ट्रेट व्यू रिटर्न 90 पर, लेकिन नेक्सस 4 पर पोर्ट्रेट के लिए वे 0.
Dexter_ns88

3
इस लिंक पर: notes.matthewgifford.com/… लेखक विभिन्न निर्माताओं से अलग-अलग उपकरणों का प्रदर्शन करता है, परिदृश्य और चित्र क्या है, इसकी अलग-अलग व्याख्या है। इसलिए विभिन्न रिपोर्ट किए गए मान, जिन पर आप वास्तव में भरोसा नहीं कर सकते।
नियॉन वेज

36

आप CSS3 का उपयोग कर सकते हैं:

@media screen and (orientation:landscape)
{
   body
   {
      background: red;
   }
}

मेरे लिए सबसे अच्छा जवाब, क्योंकि आपको बदले हुए अभिविन्यास के लिए एक श्रोता की आवश्यकता नहीं है। हालाँकि मैं इसे टच-डिवाइस होने का पता लगाने के लिए इसे आधुनिकता के साथ जोड़ती हूं, क्योंकि यह डेस्कटॉप या लैपटॉप स्क्रीन पर कोई मतलब नहीं रखता है। स्पर्श क्षमताओं के साथ ऐसी स्क्रीन के लिए अभी भी ठीक नहीं है ...
एगर

4
जावास्क्रिप्ट से संबंधित नहीं। ओपी को जावास्क्रिप्ट सॉल्यूशन की जरूरत है।

10
नहीं, वह एक संदेश प्रदर्शित करना चाहता है, आप प्रदर्शन का उपयोग कर सकते हैं: कोई भी नहीं फिर प्रदर्शन: कुछ प्रदर्शित करने के लिए ब्लॉक करें।
थॉमस डेकाक्स

2
इस सीएसएस चेक के लिए समर्थन की तरह क्या है?
क्रिस डे

1
मुझे नहीं पता, लेकिन मुझे ऐसा मोबाइल नहीं मिला जो इसका समर्थन न करता हो। यह भी पुराने एंड्रॉइड पर टूटा हुआ लगता है, जब कीबोर्ड दिखाता है कि कभी-कभी मीडिया क्वेरी को ट्रिगर किया जाता है।
थॉमस डेकाक्स

20

उदाहरण के लिए, इसे करने के कुछ तरीके हैं:

  • जाँच window.orientationमान की
  • तुलना innerHeightबनामinnerWidth

आप नीचे दिए गए तरीकों में से एक को अपना सकते हैं।


जांचें कि क्या डिवाइस पोर्ट्रेट मोड में है

function isPortrait() {
    return window.innerHeight > window.innerWidth;
}

जांचें कि क्या डिवाइस लैंडस्केप मोड में है

function isLandscape() {
    return (window.orientation === 90 || window.orientation === -90);
}

उदाहरण उपयोग

if (isPortrait()) {
    alert("This page is best viewed in landscape mode");
}

मैं अभिविन्यास परिवर्तन का पता कैसे लगाऊँ?

$(document).ready(function() {
    $(window).on('orientationchange', function(event) {
        console.log(orientation);
    });
});

10

मुझे लगता है कि अधिक स्थिर समाधान खिड़की के बजाय स्क्रीन का उपयोग करना है, क्योंकि यह दोनों हो सकता है - परिदृश्य या चित्र यदि आप डेस्कटॉप कंप्यूटर पर अपने ब्राउज़र विंडो का आकार बदल देंगे।

if (screen.height > screen.width){
    alert("Please use Landscape!");
}

यह IE 10, फ़ायरफ़ॉक्स 23 और क्रोम 29 (सभी डेस्कटॉप ब्राउज़र) में काम करता है।
जैकब जेनकोव

1
सभी प्रमुख ब्राउज़र इसका समर्थन करते हैं। आईई 7 के रूप में अच्छी तरह से
Artnikpro

मानक नहीं, हालाँकि: developer.mozilla.org/en-US/docs/Web/API/…
fjsj

@ डंकन नंबर यह मोबाइल पर काम करता है। यह एक बहुत पुरानी विधि है और यह पुरानी सफारी और एंड्रॉइड ब्राउज़र पर समर्थित है। यह रेटिना के साथ बहुत सटीक नहीं हो सकता है, लेकिन व्यूपोर्ट ओरिएंटेशन का पता लगाने के लिए इसे ठीक काम करना चाहिए
आर्टनीकप्रो

1
@artnikpro मैंने कल इसका परीक्षण किया और ऐसा प्रतीत होता है कि सफारी भौतिक स्क्रीन आयामों को उन्मुखीकरण की उपेक्षा करता है। तो स्क्रीन.विस्क्रिप्शन हमेशा स्क्रीन की भौतिक चौड़ाई है।
डंकन होगन ऑक्ट

9

इन सभी शानदार टिप्पणियों को मेरे दैनिक कोडिंग पर लागू करने के लिए, मेरे सभी अनुप्रयोगों के बीच निरंतरता के लिए, मैंने अपने jquery और jquery मोबाइल कोड दोनों में निम्नलिखित का उपयोग करने का निर्णय लिया है।

window.onresize = function (event) {
  applyOrientation();
}

function applyOrientation() {
  if (window.innerHeight > window.innerWidth) {
    alert("You are now in portrait");
  } else {
    alert("You are now in landscape");
  }
}

6

निश्चित विंडो की कोशिश न करें। सत्यापन प्रश्न (0, 90 आदि का मतलब पोर्ट्रेट, लैंडस्केप आदि से नहीं है):

http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation/

यहां तक ​​कि iOS7 पर निर्भर करता है कि आप ब्राउज़र में कैसे आते हैं 0 हमेशा पोर्ट्रेट नहीं होता है


मुझे नहीं लगता कि यह अब सच है
ओल्डबॉय

5

कुछ प्रयोग के बाद मैंने पाया है कि एक ओरिएंटेशन अवेयर डिवाइस को घुमाने से ब्राउज़र विंडो की resizeघटना हमेशा चालू रहेगी । तो अपने आकार बदलने वाले हैंडलर में बस एक फ़ंक्शन को कॉल करें जैसे:

function is_landscape() {
  return (window.innerWidth > window.innerHeight);
}

1
ऊपर देखें कि क्यों 90 => परिदृश्य कुछ ऐसा नहीं है जिस पर आप विभिन्न उपकरणों पर भरोसा कर सकते हैं।
क्रिस डे

5

मैंने दो समाधानों को संयुक्त किया और यह मेरे लिए ठीक काम करता है।

window.addEventListener("orientationchange", function() {                   
    if (window.matchMedia("(orientation: portrait)").matches) {
       alert("PORTRAIT")
     }
    if (window.matchMedia("(orientation: landscape)").matches) {
      alert("LANSCAPE")
     }
}, false);

5

मैं सबसे अधिक मतदान के जवाब से असहमत हूं। का उपयोग करें screenऔर नहींwindow

    if(screen.innerHeight > screen.innerWidth){
    alert("Please use Landscape!");
}

इसे करने का उचित तरीका है। यदि आप के साथ गणना करते हैंwindow.height , तो आपको Android पर परेशानी होगी। जब कीबोर्ड खुला होता है, तो विंडो सिकुड़ जाती है। इसलिए विंडो की जगह स्क्रीन का इस्तेमाल करें।

screen.orientation.typeएक अच्छा जवाब है, लेकिन IE के साथ है। https://caniuse.com/#search=screen.orientation


4

(अपने js कोड में किसी भी समय) के माध्यम से अभिविन्यास प्राप्त करें

window.orientation

जब आप window.orientationलौटते हैं 0या 180तब आप पोर्ट्रेट मोड में होते हैं , जब लौटते हैं 90या 270फिर आप लैंडस्केप मोड में होते हैं ।


1
यह 270 वापस नहीं करता है, हालांकि, यह रिटर्न -90।
फेलिप कोर्रिया

@FelipeCorrea जवाब 2 साल पुराना है!
सालिक

2
मैं इसे नए आगंतुकों के लिए वैध बनाने के लिए स्पष्ट कर रहा था। इसने मुझे btw की मदद की।
फेलिप कोरारे

window.orientation पदावनत कर दिया जाता है
जॉनी

4

केवल सीसीएस

@media (max-width: 1024px) and (orientation: portrait){ /* tablet and smaller */
  body:after{
    position: absolute;
    z-index: 9999;
    width: 100%;
    top: 0;
    bottom: 0;
    content: "";
    background: #212121 url(http://i.stack.imgur.com/sValK.png) 0 0 no-repeat; /* replace with an image that tells the visitor to rotate the device to landscape mode */
    background-size: 100% auto;
    opacity: 0.95;
  }
}

कुछ मामलों में आप विज़िटर को डिवाइस घुमाए जाने के बाद पेज पर पुनः लोड करने के लिए कोड का एक छोटा टुकड़ा जोड़ना चाह सकते हैं, ताकि CSS ठीक से प्रस्तुत हो सके:

window.onorientationchange = function() { 
    var orientation = window.orientation; 
        switch(orientation) { 
            case 0:
            case 90:
            case -90: window.location.reload(); 
            break; } 
};

1
मुझे पता है कि मैं ऐसा करने वाला नहीं हूं, लेकिन मुझे इसके लिए धन्यवाद कहना पड़ा, यह एक महान समाधान है।
फाल्सीपोजिटिव


2
//see also http://stackoverflow.com/questions/641857/javascript-window-resize-event
//see also http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html
/*
Be wary of this:
While you can just hook up to the standard window resize event, you'll find that in IE, the event is fired once for every X and once for every Y axis movement, resulting in a ton of events being fired which might have a performance impact on your site if rendering is an intensive task.
*/

//setup 
window.onresize = function(event) {
    window_resize(event);
}

//timeout wrapper points with doResizeCode as callback
function window_resize(e) { 
     window.clearTimeout(resizeTimeoutId); 
     resizeTimeoutId = window.setTimeout('doResizeCode();', 10); 
}

//wrapper for height/width check
function doResizeCode() {
    if(window.innerHeight > window.innerWidth){
        alert("Please view in landscape");
    }
}

2

चौड़ाई / ऊंचाई की तुलना के आधार पर अभिविन्यास निर्धारित करने का एक और विकल्प:

var mql = window.matchMedia("(min-aspect-ratio: 4/3)");
if (mql.matches) {
     orientation = 'landscape';
} 

आप इसे "आकार" घटना पर उपयोग करते हैं:

window.addEventListener("resize", function() { ... });

2

iOS अपडेट नहीं करता है screen.widthऔर screen.heightजब ओरिएंटेशन बदलता है। Android अपडेट नहीं हैwindow.orientationजब यह बदलता है, तो नहीं होता है।

मेरी इस समस्या का हल:

var isAndroid = /(android)/i.test(navigator.userAgent);

if(isAndroid)
{
    if(screen.width < screen.height){
        //portrait mode on Android
    }
} else {
    if(window.orientation == 0){
        //portrait mode iOS and other devices
    }
}

आप निम्न कोड के साथ Android और साथ ही iOS पर अभिविन्यास में इस परिवर्तन का पता लगा सकते हैं:

var supportsOrientationChange = "onorientationchange" in window,
    orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";

window.addEventListener(orientationEvent, function() {
    alert("the orientation has changed");
}, false);

यदि onorientationchangeईवेंट समर्थित नहीं है, तो ईवेंट बाउंड ईवेंट होगा resize


2

यदि आपके पास नवीनतम ब्राउज़र हैं तो window.orientationकाम नहीं कर सकते हैं। उस स्थिति में कोण प्राप्त करने के लिए निम्नलिखित कोड का उपयोग करें -

var orientation = window.screen.orientation.angle;

यह अभी भी एक प्रायोगिक तकनीक है, आप यहां ब्राउज़र संगतता की जांच कर सकते हैं


1

रास्ता तय करने के लिए tobyodavies का धन्यवाद।

मोबाइल डिवाइस के अभिविन्यास पर आधारित एक चेतावनी संदेश प्राप्त करने के लिए आपको निम्नलिखित स्क्रिप्ट को लागू करना होगा function setHeight() {

if(window.innerHeight > window.innerWidth){
    alert("Please view in landscape");
}

1

270 के बजाय, यह -90 (माइनस 90) हो सकता है।


1

यह पिछले उत्तर पर फैलता है। सबसे अच्छा समाधान जो मैंने पाया है वह एक सहज सीएसएस विशेषता बनाने के लिए है जो केवल तब प्रकट होता है जब एक CSS3 मीडिया क्वेरी से मुलाकात की जाती है, और फिर उस विशेषता के लिए जेएस परीक्षण होता है।

उदाहरण के लिए, सीएसएस में आपके पास होगा:

@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;
    }
}

फिर आप जावास्क्रिप्ट पर जाएं (मैं मजाक के लिए 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 + "!");
    });
});

इसका सबसे अच्छा हिस्सा यह है कि मेरे इस उत्तर को लिखने के रूप में, यह डेस्कटॉप इंटरफेस पर कोई प्रभाव नहीं डालता है, क्योंकि वे (आम तौर पर) पृष्ठ के उन्मुखीकरण के लिए कोई तर्क नहीं देते (प्रतीत होते हैं)।


एक नोट के रूप में विंडोज 10 और एज इस में एक रिंच फेंक सकते हैं - मैंने अभी तक नए प्लेटफ़ॉर्म पर पर्याप्त परीक्षण नहीं किया है, लेकिन कम से कम शुरुआत में, ऐसा लगता है कि यह ब्राउज़र को ओरिएंटेशन डेटा की आपूर्ति कर सकता है। अभी भी इसके आसपास अपनी साइट बनाना संभव है, लेकिन इसके बारे में जागरूक होना निश्चित रूप से कुछ है।
जोश सी

1

डेविड वाल्श के लेख ( मोबाइल डिवाइस पर पता लगाने के लिए ओरिएंटेशन चेंज का पता लगाने ) के आधार पर मुझे यहां सबसे अच्छी विधि मिली है।

if ( window.matchMedia("(orientation: portrait)").matches ) {  
   alert("Please use Landscape!") 
}

स्पष्टीकरण:

Window.matchMedia () एक देशी विधि है जो आपको किसी भी समय मीडिया क्वेरी नियम को परिभाषित करने और इसकी वैधता की जांच करने की अनुमति देती है।

मुझे onchangeइस विधि के वापसी मूल्य पर एक श्रोता को संलग्न करना उपयोगी लगता है । उदाहरण:

var mediaQueryRule = window.matchMedia("(orientation: portrait)")
mediaQueryRule.onchange = function(){ alert("screen orientation changed") }

1

मैंने Android Chrome "द स्क्रीन ओरिएंटेशन एपीआई" के लिए उपयोग किया है

वर्तमान ओरिएंटेशन कॉल कंसोल देखने के लिए (screen.orientation.type) (और शायद screen.orientation.angle)।

परिणाम: चित्र-प्राथमिक | चित्र-माध्यमिक | परिदृश्य-प्राथमिक | परिदृश्य माध्यमिक

नीचे मेरा कोड है, मुझे आशा है कि यह उपयोगी होगा:

var m_isOrientation = ("orientation" in screen) && (typeof screen.orientation.lock == 'function') && (typeof screen.orientation.unlock == 'function');
...
if (!isFullscreen()) return;
screen.orientation.lock('landscape-secondary').then(
    function() {
        console.log('new orientation is landscape-secondary');
    },
    function(e) {
        console.error(e);
    }
);//here's Promise
...
screen.orientation.unlock();
  • मैंने केवल एंड्रॉइड क्रोम के लिए परीक्षण किया - ठीक है

1
screen.orientation.addEventListener("change", function(e) {
 console.log(screen.orientation.type + " " + screen.orientation.angle);
}, false);

हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। कृपया अपने कोड को व्याख्यात्मक टिप्पणियों के साथ भीड़ देने की कोशिश न करें, क्योंकि इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है!
गुडबाय StackExchange

यह उत्तर मूल प्रश्न में समस्या को हल नहीं करता है। यह दिखाता है कि अभिविन्यास में परिवर्तन कैसे किया जाता है, लेकिन यह नहीं दिखाता है कि केवल एक विशेष अभिविन्यास में किसी संदेश को कैसे प्रदर्शित किया जाए।
जूलियन

1

आईओएस उपकरणों पर जावास्क्रिप्ट में विंडो ऑब्जेक्ट में एक अभिविन्यास संपत्ति है जिसका उपयोग डिवाइस के रोटेशन को निर्धारित करने के लिए किया जा सकता है। निम्नलिखित आईओएस डिवाइसों (जैसे आईफोन, आईपैड, आईपॉड) के लिए अलग-अलग झुकाव पर मान window.orientation दिखाता है।

यह समाधान एंड्रॉइड डिवाइस के लिए भी काम करता है। मैंने एंड्रॉइड देशी ब्राउज़र (इंटरनेट ब्राउज़र) और क्रोम ब्राउज़र में, यहां तक ​​कि इसके पुराने संस्करणों में भी जांच की।

function readDeviceOrientation() {                      
    if (Math.abs(window.orientation) === 90) {
        // Landscape
    } else {
        // Portrait
    }
}

1

यही है वह जो मेरे द्वारा उपयोग किया जाता है।

function getOrientation() {

    // if window.orientation is available...
    if( window.orientation && typeof window.orientation === 'number' ) {

        // ... and if the absolute value of orientation is 90...
        if( Math.abs( window.orientation ) == 90 ) {

              // ... then it's landscape
              return 'landscape';

        } else {

              // ... otherwise it's portrait
              return 'portrait';

        }

    } else {

        return false; // window.orientation not available

    }

}

कार्यान्वयन

window.addEventListener("orientationchange", function() {

     // if orientation is landscape...
     if( getOrientation() === 'landscape' ) {

         // ...do your thing

    }

}, false);

0
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Rotation Test</title>
  <link type="text/css" href="css/style.css" rel="stylesheet"></style>
  <script src="js/jquery-1.5.min.js" type="text/javascript"></script>
  <script type="text/javascript">
        window.addEventListener("resize", function() {
            // Get screen size (inner/outerWidth, inner/outerHeight)
            var height = $(window).height();
            var width = $(window).width();

            if(width>height) {
              // Landscape
              $("#mode").text("LANDSCAPE");
            } else {
              // Portrait
              $("#mode").text("PORTRAIT");
            }
        }, false);

  </script>
 </head>
 <body onorientationchange="updateOrientation();">
   <div id="mode">LANDSCAPE</div>
 </body>
</html>

0

एक तरीका है जिसके द्वारा आप यह पता लगा सकते हैं कि उपयोगकर्ता ने अपने डिवाइस का उपयोग करके पोर्ट्रेट मोड में फ़्लिप किया है screen.orientation

बस कोड का उपयोग करें:

screen.orientation.onchange = function () {
     var type = screen.orientation.type;
     if (type.match(/portrait/)) {
         alert('Please flip to landscape, to use this app!');
     }
}

अब, onchangeनिकाल दिया जाएगा जब कभी उपयोगकर्ता डिवाइस को फ़्लिप करता है और पोर्ट्रेट मोड का उपयोग करते समय अलर्ट पॉप-अप होगा।


0

एक बात का ध्यान रखें window.orientationकि undefinedयदि आप मोबाइल डिवाइस पर नहीं हैं तो यह वापस आ जाएगा । तो अभिविन्यास के लिए जाँच करने के लिए एक अच्छा कार्य इस तरह लग सकता है, जहाँ xहै window.orientation:

//check for orientation
function getOrientation(x){
  if (x===undefined){
    return 'desktop'
  } else {
    var y;
    x < 0 ? y = 'landscape' : y = 'portrait';
    return y;
  }
}

इसे ऐसे कॉल करें:

var o = getOrientation(window.orientation);
window.addEventListener("orientationchange", function() {
  o = getOrientation(window.orientation);
  console.log(o);
}, false);

0

या आप इस का उपयोग कर सकते हैं ..

window.addEventListener("orientationchange", function() {
    if (window.orientation == "90" || window.orientation == "-90") {
        //Do stuff
    }
}, false);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.