Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
看电话';使用JavaScript实现物理定向_Javascript_Mobile_Orientation_Responsive - Fatal编程技术网

看电话';使用JavaScript实现物理定向

看电话';使用JavaScript实现物理定向,javascript,mobile,orientation,responsive,Javascript,Mobile,Orientation,Responsive,我想知道用户是否在纵向或横向模式下保持屏幕,即使他们锁定了屏幕 我不能使用orientationchange事件,因为如果旋转被锁定,这些事件将不会触发。我希望跟踪设备的实际旋转,而不是视口的逻辑方向 我知道,通常情况下,我们不应该强制用户显示方向,当用户锁定方向时,我们应该尊重他们的偏好——但我确实有理由这样做 有什么办法吗?是-如果手机保持直立状态。然后我们可以使用DeviceMotionEvents读取手机X轴和Y轴上的重力: function watchOrientation(subsc

我想知道用户是否在纵向或横向模式下保持屏幕,即使他们锁定了屏幕

我不能使用
orientationchange
事件,因为如果旋转被锁定,这些事件将不会触发。我希望跟踪设备的实际旋转,而不是视口的逻辑方向

我知道,通常情况下,我们不应该强制用户显示方向,当用户锁定方向时,我们应该尊重他们的偏好——但我确实有理由这样做


有什么办法吗?

是-如果手机保持直立状态。然后我们可以使用
DeviceMotionEvents
读取手机X轴和Y轴上的重力:

function watchOrientation(subscriber) {
    if (window.DeviceMotionEvent) {
        window.addEventListener('devicemotion', eventData => {
            const hg = eventData.accelerationIncludingGravity.x;
            const vg = eventData.accelerationIncludingGravity.y;

            if (vg > 5) {
                subscriber('up');
            } else if (vg <= -5) {
                subscriber('down');
            } else if (hg > 0) {
                subscriber('left');
            } else if (hg <= 0) {
                subscriber('right');
            }

        }, true);
    } else {
        console.warn('Device does not support "devicemotion" events');
    }
}
功能定位(订户){
if(window.DeviceMotionEvent){
addEventListener('devicemotion',eventData=>{
const hg=eventData.accelerationIncludingGravity.x;
const vg=eventData.accelerationIncludingGravity.y;
如果(vg>5){
认购人(“up”);
}else if(vg 0){
认购人(“左”);
}否则,如果(汞柱)