ভিউপোর্ট ওরিয়েন্টেশন সনাক্ত করুন, যদি ওরিয়েন্টেশনটি প্রতিক্রিয়ার নির্দেশাবলী ব্যবহারকারীর পরামর্শের বার্তা প্রদর্শন করে message


195

আমি বিশেষ করে মোবাইল ডিভাইসের জন্য একটি ওয়েবসাইট তৈরি করছি। বিশেষত একটি পৃষ্ঠা রয়েছে যা ল্যান্ডস্কেপ মোডে সেরা দেখা।

সেই পৃষ্ঠাটি পরিদর্শনকারী ব্যবহারকারী এটি প্রতিকৃতি মোডে দেখছেন কিনা তা সনাক্ত করার কোনও উপায় আছে এবং যদি তাই হয় তবে ব্যবহারকারীকে অবহিত করে একটি বার্তা প্রদর্শন করুন যে পৃষ্ঠাটি ল্যান্ডস্কেপ মোডে সবচেয়ে ভাল দেখা গেছে? যদি ব্যবহারকারী ইতিমধ্যে এটি ল্যান্ডস্কেপ মোডে দেখছেন তবে কোনও বার্তা উপস্থিত হবে না।

সুতরাং মূলত, আমি সাইটটি ভিউপোর্ট ওরিয়েন্টেশন সনাক্ত করতে চাই, যদি ওরিয়েন্টেশন পোর্ট্রেট হয় , তবে ব্যবহারকারীকে পরামর্শ দেওয়ার জন্য একটি সতর্কতা বার্তা প্রদর্শন করুন যাতে এই পৃষ্ঠাটি ল্যান্ডস্কেপ মোডে সবচেয়ে ভাল দেখা যায় ।

উত্তর:


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

jQuery মোবাইল এর একটি ইভেন্ট রয়েছে যা এই সম্পত্তিটির পরিবর্তনটি পরিচালনা করে ... আপনি যদি সতর্ক করতে চান তবে কেউ যদি পরে ঘোরে - orientationchange

এছাড়াও, কিছু গুগল করার পরে, চেক আউট করুন window.orientation(যা আমি বিশ্বাস করি যে ডিগ্রিগুলিতে পরিমাপ করা হয় ...)


6
না, দুর্ভাগ্যবশত না. তবে, নিম্নলিখিত স্ক্রিপ্টটি কাজ করেছে: যদি (উইন্ডো। ইনারহাইট> উইন্ডো। }
ড্যান

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
}

আইপ্যাড 2 এ পরীক্ষা করা হয়েছে।


3
বৈশিষ্ট্যটির জন্য সমর্থনটি
আশিতাকা

2
ফায়ারফক্সের জন্য অ্যান্ড্রয়েড আমার জন্য ডম প্রস্তুত ইভেন্টের পরেই সঠিকভাবে কাজ করে।
বিপরীতে

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);

এই পরিবর্তনগুলির সময়, উইন্ডো.রিয়েন্টেশন সম্পত্তি পরিবর্তন হতে পারে। 0 এর মান মানে প্রতিকৃতি দৃশ্য, -90 অর্থ একটি ডিভাইসটি ল্যান্ডস্কেপ ডানদিকে ঘোরানো হয় এবং 90 এর অর্থ ডিভাইসটি বামদিকে ঘোরানো হয় land

http://davidwalsh.name/orientation-change


2
নেক্সাস 10 এ, এবং অন্যান্য অ্যান্ড্রয়েড 10 "ট্যাবলেটগুলি সম্পর্কে আমি জানি না, মানগুলি পিছনের দিকে থাকে e মানে ডিভাইসটি প্রতিকৃতিতে নয়, ল্যান্ডস্কেপ এ থাকা অবস্থায় ফিরে আসে to পরীক্ষিত হয়েছে
নাথান

8
ওরিয়েন্টেশন 0 টি ডিভাইসের "প্রাকৃতিক" ওরিয়েন্টেশন হিসাবে দেওয়া হয় এবং এটি বিক্রেতারা-নির্ভর। এটা তোলে প্রতিকৃতি বা আড়াআড়ি হতে পারে ...
পিয়ের


2
এটি ডিভাইসের সনাক্তকরণ ওরিয়েন্টেশন মোডের জন্য ভাল সমাধান নয়। কারণ তারা প্রাকৃতিক ডিভাইস ওরিয়েন্টেশনের উপর নির্ভর করে মূল্য ফেরত দেয়। স্যামসাং 7 এর ট্যাবলেট প্রতিকৃতি দেখুন 90 এর প্রত্যাবর্তন কিন্তু পোর্ট্রেটের জন্য নেক্সাস 4 এ তারা 0
ফেরায়

3
এই লিঙ্কটিতে: নোটস.ম্যাটজিগিফোর্ড.com/… লেখক বিভিন্ন নির্মাতাদের বিভিন্ন ডিভাইস শোকেস করেছেন ল্যান্ডস্কেপ এবং প্রতিকৃতি সম্পর্কে কী আলাদা ব্যাখ্যা রয়েছে। অতএব বিভিন্ন রিপোর্ট করা মান, যা আপনি সত্যিই নির্ভর করতে পারবেন না।
নিয়ন ওয়ার্জ

36

আপনি CSS3 ব্যবহার করতে পারেন:

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

আমার কাছে সেরা উত্তর, কারণ পরিবর্তিত দিকনির্দেশের জন্য আপনার কোনও শ্রোতার দরকার নেই। যদিও আমি এটি একটি টাচ-ডিভাইস কিনা তা সনাক্ত করার জন্য এটি আধুনিকীকরণের সাথে একত্রিত করেছি, যেহেতু এটি ডেস্কটপ বা ল্যাপটপের স্ক্রিনগুলিতে কোনও অর্থ দেয় না। স্পর্শ ক্ষমতা সহ এই ধরনের পর্দার জন্য এখনও ঠিক নেই ...
এস্পার

4
জাভাস্ক্রিপ্ট সম্পর্কিত নয়। ওপির জাভাস্ক্রিপ্ট সমাধান দরকার।
ইজিউই

10
না, তিনি একটি বার্তা প্রদর্শন করতে চান, আপনি প্রদর্শনটি ব্যবহার করতে পারেন: কিছুই না তবে প্রদর্শন করুন: কিছু প্রদর্শন করতে ব্লক করুন।
থমাস ডিকাক্স

2
এই সিএসএস চেক এর জন্য সমর্থন কি?
ChrisF

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!");
}

এটি আইই 10, ফায়ারফক্স 23 এবং ক্রোম 29 (সমস্ত ডেস্কটপ ব্রাউজার) এ কাজ করে।
জাকব জেনকভ

1
সমস্ত বড় ব্রাউজার এটি সমর্থন করে। আইই 7 পাশাপাশি
আর্টনিকপ্রো

মানসম্মত নয়, যদিও: 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/

এমনকি আপনি ব্রাউজারে 0 কীভাবে আসবেন তা নির্ভর করে আইওএস 7-তে সর্বদা প্রতিকৃতি নয়


আমি এটি আর সত্য বলে মনে করি না
Oldboy

5

কিছু পরীক্ষা-নিরীক্ষার পরে আমি জানতে পেরেছি যে একটি অরিয়েন্টেশন সচেতন ডিভাইসটি ঘোরানো সর্বদা একটি ব্রাউজার উইন্ডোর resizeইভেন্টকে ট্রিগার করবে । সুতরাং আপনার আকার পরিবর্তনকারী হ্যান্ডলারটিতে কেবল এমন কোনও ফাংশন কল করুন:

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

1
90 => ল্যান্ডস্কেপ এমন কোনও জিনিস নয় যা আপনি বিভিন্ন ডিভাইস জুড়ে নির্ভর করতে পারেন তা উপরে দেখুন।
ChrisF

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 অ্যান্ড্রয়েডে সমস্যা হবে। কীবোর্ড খোলা থাকলে উইন্ডো সঙ্কুচিত হয়। সুতরাং উইন্ডোর পরিবর্তে পর্দা ব্যবহার করুন।

screen.orientation.typeএকটি ভাল উত্তর কিন্তু আই ই সাথে। https://caniuse.com/#search=screen.orientation


4

(আপনার জেএস কোডে যে কোনও সময়) মাধ্যমে ওরিয়েন্টেশন পান

window.orientation

যখন window.orientationফিরে আসে 0বা 180তারপরে আপনি প্রতিকৃতি মোডে থাকেন , ফিরে আসার সময় 90বা 270তারপরে আপনি ল্যান্ডস্কেপ মোডে থাকেন


1
এটি 270 ফেরত দেয় না, এটি 90-ফেরত আসে।
ফিলিপ কোরিয়া

@ ফিলিপোরিয়া উত্তরটি 2 বছরের পুরানো!
স্লিক

2
আমি এটি নতুন দর্শকদের জন্য বৈধ করতে স্পষ্ট করে বলছিলাম। এটি আমাকে বিটিডব্লিউ সাহায্য করেছিল।
ফিলিপ কোরিয়া

উইন্ডোঅরিয়েন্টেশন অবচিত করা হয়েছে
জনি

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

কিছু ক্ষেত্রে দর্শকের ডিভাইসটি ঘোরানোর পরে আপনি পৃষ্ঠাটিতে পুনরায় লোড করার জন্য কোডের একটি ছোট অংশ যোগ করতে চাইতে পারেন, যাতে সিএসএস যথাযথভাবে রেন্ডার হয়:

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

আইওএস আপডেট করে না screen.widthএবং screen.heightকখন ওরিয়েন্টেশন পরিবর্তন হয়। অ্যান্ড্রয়েড 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
    }
}

আপনি নিম্নলিখিত কোড সহ অ্যান্ড্রয়েডের পাশাপাশি আইওএসে ওরিয়েন্টেশনে এই পরিবর্তনটি সনাক্ত করতে পারেন:

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

এটি পূর্ববর্তী উত্তরে প্রসারিত হয়। আমি খুঁজে পেয়েছি সেরা সমাধানটি একটি নির্দোষ সিএসএস অ্যাট্রিবিউট তৈরি করা যা কেবলমাত্র সিএসএস 3 মিডিয়া ক্যোয়ারী পূরণ করা হলে উপস্থিত হয় এবং তারপরে সেই বৈশিষ্ট্যের জন্য জেএস পরীক্ষা করা হয়।

উদাহরণস্বরূপ, সিএসএসে আপনি যা চাইবেন:

@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!") 
}

ব্যাখ্যা:

উইন্ডো.ম্যাচমিডিয়া () একটি দেশীয় পদ্ধতি যা আপনাকে একটি মিডিয়া ক্যোয়ারী নিয়ম সংজ্ঞায়িত করতে এবং যে কোনও সময়ে এর বৈধতা পরীক্ষা করতে দেয়।

আমি onchangeএই পদ্ধতির ফেরতের মানটিতে শ্রোতার সংযুক্তিটি দরকারী বলে মনে করি । উদাহরণ:

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

1

আমি অ্যান্ড্রয়েড ক্রোম "দ্য স্ক্রিন ওরিয়েন্টেশন এপিআই" এর জন্য ব্যবহার করেছি

বর্তমান ওরিয়েন্টেশন কল কনসোল.লগ (স্ক্রিন.রিয়েন্টেশন.টাইপ) (এবং সম্ভবত পর্দা.অরিয়েন্টেশন.এঙ্গেল) দেখতে।

ফলাফল: প্রতিকৃতি-প্রাথমিক | প্রতিকৃতি-মাধ্যমিক | ল্যান্ডস্কেপ-প্রাথমিক | ভূদৃশ্য-মাধ্যমিক

নীচে আমার কোডটি রয়েছে, আমি আশা করি এটি সহায়ক হবে:

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);

যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। আপনার কোডটি ব্যাখ্যামূলক মন্তব্যে ভিড় না করার চেষ্টা করুন, কারণ এটি কোড এবং ব্যাখ্যা উভয়ের পাঠযোগ্যতা হ্রাস করে!
বিদায় স্ট্যাকএক্সচেঞ্জ

এই উত্তরটি মূল প্রশ্নের সমস্যার সমাধান করে না। এটি ওরিয়েন্টেশন পরিবর্তনগুলিকে কীভাবে লগ করতে হয় তা দেখায়, তবে এটি কেবল একটি নির্দিষ্ট অভিযোজনে কোনও বার্তা প্রদর্শন করার পদ্ধতিটি প্রদর্শন করে না।
জুলিয়ান

1

আইওএস ডিভাইসগুলিতে জাভাস্ক্রিপ্টের উইন্ডো অবজেক্টটিতে একটি ওরিয়েন্টেশন সম্পত্তি রয়েছে যা ডিভাইসের ঘূর্ণন নির্ধারণ করতে ব্যবহার করা যেতে পারে। নীচে আইওএস ডিভাইসগুলির জন্য উইন্ডো-ওরিয়েন্টেশন (উদাহরণস্বরূপ আইফোন, আইপ্যাড, আইপড) দেখায় different

এই সমাধানটি অ্যান্ড্রয়েড ডিভাইসের জন্যও কাজ করে। আমি অ্যান্ড্রয়েড নেটিভ ব্রাউজারে (ইন্টারনেট ব্রাউজার) এবং ক্রোম ব্রাউজারে, এমনকি এটির পুরানো সংস্করণেও চেক করেছি।

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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.