javascript - 如何使用 JavaScript 检测设备方向?

标签 javascript android cordova jqtouch

我见过很多检测设备屏幕方向的方法,包括使用检查来测试 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 的设备模拟器)。

最佳答案

有两种方法:

首先,根据 Screen 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 等不兼容 Screen 的其他浏览器兼容,this post表明您可以继续使用 innerWidth 和 innerHeight 调整窗口大小。

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

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

关于javascript - 如何使用 JavaScript 检测设备方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36650949/

相关文章:

javascript - 如何在 vuetify 的浅色主题中启用自定义颜色的深色模式?

javascript - 异步等待回调不是函数

android - Gradle:如何指定库的两个源集并在项目中添加依赖项

ios - Ionic - 在 Apple Maps App 中打开导航方向

ios - Xcode 5.1.1 - 错误 : Start Page at 'www/index.html' was not found

Javascript - 获取带哈希值的 url 参数

javascript - CodeMirror 自定义提示列表无法正常工作

android - 应用骨架支持多屏

java - 更新后单击 Vector Assets 上的颜色时 Android Studio 崩溃

android - Crosswalk Cordova - 单击延迟未由 ontouchstart 修复