DeviceMotionEvent 和 DeviceOrientationEvent 在 Samsung Galaxy



>以下是我的三星Galaxy Tab的用户代理

Mozilla/5.0 (Linux;安卓 8.1.0;SM-T580 构建/M1AJQ;西弗吉尼亚( AppleWebKit/537.36 (KHTML, like Gecko( Version/4.0铬/76.0.3809.89野生动物园/537.36

请注意,截至今天(2019 年 8 月 8 日(,这是最新版本的 chrome。作为参考,这里是我的 Pixel 3 用户代理:

Mozilla/5.0 (Linux;安卓 9;Pixel 3( AppleWebKit/537.36 (KHTML, 像壁虎(铬/76.0.3809.89 移动野生动物园/537.36

两者都具有相同的镀铬版本。

在平板电脑上检查window.DeviceOrientationEvent时,我得到了undefined,并且在像素手机上ƒ DeviceOrientationEvent() { [native code] }

这一事实导致我的定向侦听器在平板电脑上失败。

window.addEventListener('deviceorientation', (event) => {
console.log(event);
});

如果铬版本相同,那怎么可能? 是否有三星"禁用机制"作为默认行为,或者可能是错误?

你有什么猜测?

事实上,知道为什么会发生这种情况可能会很有趣。 我在智能手机Galaxy S10上遇到了同样的问题。 用户代理是这个:

User-Agent: Mozilla/5.0 (Linux;安卓 10;SM-G973F( AppleWebKit/537.36 (KHTML, like Gecko(Chrome/80.0.3987.119 Mobile Safari/537.36

当我在这里看到浏览器兼容性表时,我不明白为什么我的手机无法触发此事件。

这里可以提供帮助(您可能已经尝试过(是将此事件替换为orientationchange事件,该事件允许您密切关注设备的方向。

你这里有一个简短的文档!

我为我的测试做了一个例子,我很高兴分享,你在这里:

<!DOCTYPE html>
<html>
<head>
<title>Orientation - Screen Mode</title>
<meta name="viewport" content="width=device-width, user-scalable=no">
</head>
<body>
<span id="mode" />
<script>
(function() {
var mode = document.getElementById('mode');
function modeFrom(orientationAngle) {
return orientationAngle !== 0? 'landscape': 'portrait';
}
function setInfosFrom(o, value) {
value = 'Non compatible browser!';
if (o !== undefined) {
value = modeFrom(o) + " (angle " + o + "&deg;)";
}
mode.innerHTML = value;
}
function setInfos() {
setInfosFrom(window.orientation);
}
setInfos();
window.addEventListener('orientationchange', setInfos, false);
}());
</script>
</body>
</html>

希望对您或其他读者有所帮助! :)

祝你今天开心!

最新更新