Как определить ориентацию устройства с помощью JavaScript?

Я видел несколько способов определения ориентации экрана устройства, в том числе с помощью проверки для тестирования innerWidth против innerHeight, например.

function getOrientation(){
    var orientation = window.innerWidth > window.innerHeight ? "Landscape" : "Primary";
    return orientation;
}

но что, если я хочу проверить для изменения в ориентации экрана, а также с помощью прослушивателя событий? Я пробовал этот код но он не работает для меня.

  function doOnOrientationChange()
  {
    switch(window.orientation) 
    {  
      case -90:
      case 90:
        alert('landscape');
        break; 
      default:
        alert('portrait');
        break; 
    }
  }

  window.addEventListener('orientationchange', doOnOrientationChange);

  // Initial execution if needed
  doOnOrientationChange();

он не обнаруживает ориентацию устройства, и слушатель не регистрируется для меня (я использую эмулятор устройства Chrome).

1 ответов


есть два способа сделать это:

во-первых, согласно API экрана документация, используя >= Chrome 38, Firefox и IE 11, объект экрана доступен не только для просмотра ориентации, но и для регистрации прослушивателя при каждом изменении ориентации устройства.

screen.orientation.type явно даст вам знать, что такое ориентация, и для слушателя вы можете использовать что-то простое, как:

screen.orientation.onchange = function (){
    // logs 'portrait' or 'landscape'
    console.log(screen.orientation.type.match(/\w+/)[0]);
};

во-вторых, для совместимости с другие браузеры, такие как Safari, которые не совместимы с экраном,этот пост показывает, что вы можете продолжать использовать innerWidth и innerHeight при изменении размера окна.

 function getOrientation(){
    var orientation = window.innerWidth > window.innerHeight ? "Landscape" : "Portrait";
    return orientation;
}

 window.onresize = function(){ getOrientation(); }