首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JS中检测手机角度(0,90,-90,180)的方法

在JS中检测手机角度(0,90,-90,180)的方法
EN

Stack Overflow用户
提问于 2020-07-04 20:13:22
回答 2查看 509关注 0票数 0

我正在使用JavaScript。我需要知道用户何时改变了手机的方向,我也需要知道哪个方向( 0,90,-90或180)。

  • 我试着从文档中使用orientationchange
代码语言:javascript
复制
window.addEventListener("orientationchange", function(event) {
  console.log("the orientation of the device is now " + event.target.screen.orientation.angle);
});

不幸的是,这并不适用于IOS Safari。在orientation中没有event.target.screen对象。

  • 我试过使用window.orientation (似乎它正在工作,但从文档来看,它是不推荐的,必须避免。
  • 我试过resize侦听器。
代码语言:javascript
复制
window.onresize =  () => {
    if(window.innerWidth >= window.innerHeight){
          //landscape
     }
    else{
        //portrait
    }
};

这有两个问题。1)有时在某些iPhones或同一iPhone上不能正确检测到这一点,但在不同的时间。2)我不知道如何知道角度。(0,90,-90,180)。我对屏幕、innerHeightinnerWidth或诸如此类的东西不太了解。

有合适的解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-07-04 20:18:24

你试过β(x轴)或γ(y轴)吗?

例如:

代码语言:javascript
复制
function handleOrientation(event) {
var absolute = event.absolute;
var alpha    = event.alpha; // z-axis
var beta     = event.beta;  // x-axis
var gamma    = event.gamma; // y-axis

// Do stuff with the new orientation data

}

票数 1
EN

Stack Overflow用户

发布于 2020-07-04 20:34:24

您可以使用窗口上的deviceorientation事件。

代码语言:javascript
复制
window.addEventListener("deviceorientation", function(e){
    const {absolute, alpha, beta, gamma} = e;
});

根据MDN

  • DeviceOrientationEvent.alpha值表示设备围绕z轴的运动,以度表示,数值范围从0到360。
  • DeviceOrientationEvent.beta值表示装置绕x轴的运动,以度表示,数值范围为-180至180。这代表了设备的前后运动。
  • DeviceOrientationEvent.gamma值表示设备绕y轴的运动,以度表示,数值范围从-90到90。这表示设备从左到右的运动。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62733986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档