Chrome桌面上的ondevicemotion返回true

时间:2013-11-19 09:40:20

标签: javascript google-chrome

我正在使用github的“shake”功能 - 它有一个基于浏览器的javascript检测。

//feature detect
this.hasDeviceMotion = 'ondevicemotion' in window;

即使在OS X上的Chrome上也是如此。 这感觉很奇怪,因为我不愿意在桌面上摇动我的显示器。

OS X上的Safari在测试时会给我“假”。

我已经搜索过但未能找出Chrome决定采用此路径的原因。它让我烦恼。

有没有更好的方法来进行此检测?并非所有的“移动设备”都有动摇......或者不让浏览器具备这种功能,因为它似乎不适用于Windows手机。

1 个答案:

答案 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}希望此帮助的事件,如果不是,我会很乐意学习并获得一些反馈。