我正在使用github的“shake”功能 - 它有一个基于浏览器的javascript检测。
//feature detect
this.hasDeviceMotion = 'ondevicemotion' in window;
即使在OS X上的Chrome上也是如此。 这感觉很奇怪,因为我不愿意在桌面上摇动我的显示器。
OS X上的Safari在测试时会给我“假”。
我已经搜索过但未能找出Chrome决定采用此路径的原因。它让我烦恼。
有没有更好的方法来进行此检测?并非所有的“移动设备”都有动摇......或者不让浏览器具备这种功能,因为它似乎不适用于Windows手机。
答案 0 :(得分:0)
不确定你的问题,我也只是深入研究它的功能,但你可以使用像
这样的东西X : <span id="varx"></span>
Y : <span id="vary"></span>
Z : <span id="varz"></span>
<script>
window.ondevicemotion = function(event){
var accelerationX = event.accelerationIncludingGravity.x;
var accelerationY = event.accelerationIncludingGravity.y;
var accelerationZ = event.accelerationIncludingGravity.z;
document.getElementById("varx").innerHTML = accelerationX;
document.getElementById("vary").innerHTML = accelerationY;
document.getElementById("varz").innerHTML = accelerationZ;
};
</script>
只有当事件具有accelerationIncludingGravity属性时才显示此值,这仅在移动设备中可用,而不是100%这是您想要的,您还可以触发要求if(accelerationX){//execute action}else{//execute planB}
希望此帮助的事件,如果不是,我会很乐意学习并获得一些反馈。