以下是我的Samsung Galaxy Tab的用户代理
Mozilla / 5.0(Linux; Android 8.1.0; SM-T580 Build / M1AJQ; wv) AppleWebKit / 537.36(KHTML,如Gecko)版本/4.0 Chrome / 76.0.3809.89 Safari / 537.36
请注意,截至今天(2019年8月8日),这是chrome的最新版本。作为参考,这里是我的Pixel 3用户代理:
Mozilla / 5.0(Linux; Android 9; Pixel 3)AppleWebKit / 537.36(KHTML, 像Gecko) Chrome / 76.0.3809.89 移动Safari / 537.36
两者都具有相同的Chrome版本。
在平板电脑上检查window.DeviceOrientationEvent
时,我得到undefined
和像素电话ƒ DeviceOrientationEvent() { [native code] }
上的信息。
这个事实导致我的定向侦听器在平板电脑上失败。
window.addEventListener('deviceorientation', (event) => {
console.log(event);
});
如果Chrome版本相同,那怎么办? 是否有三星的“禁用机制”作为默认行为,或者可能是错误?
您的猜测是什么?
答案 0 :(得分:0)
实际上,了解为什么会发生这可能很有趣。 我的智能手机Galaxy S10遇到相同的问题。 用户代理就是这个:
用户代理:Mozilla / 5.0(Linux; Android 10; SM-G973F)AppleWebKit / 537.36(KHTML,例如Gecko) Chrome / 80.0.3987.119 移动版Safari / 537.36
当我看到浏览器兼容性表here时,我不明白为什么手机无法触发此事件。
这里有什么帮助(您可能已经尝试过此操作)是用orientationchange
事件代替此事件,该事件使您也可以注意设备的方向。
您有一个简短的文档here!
我为测试做了一个例子,很高兴与大家分享,这里是您:
<!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 + "°)";
}
mode.innerHTML = value;
}
function setInfos() {
setInfosFrom(window.orientation);
}
setInfos();
window.addEventListener('orientationchange', setInfos, false);
}());
</script>
</body>
</html>
希望它对您或其他读者有帮助! :)
祝你有美好的一天!