账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎么用 JavaScript 禁止 devicemotion 事件
    34
    0

    怎么写禁止摇一摇函数? function shakeStop();

     
            var SHAKE_THRESHOLD = 1000;
            var last_update = 0;
            var x = y = z = last_x = last_y = last_z = 0;
    
            
            if (window.DeviceMotionEvent) {
                window.addEventListener('devicemotion', deviceMotionHandler, false);
            } else {
                alert('本设备不支持devicemotion事件');
            }
            
            function deviceMotionHandler(eventData) {
                var acceleration = eventData.accelerationIncludingGravity;
                var curTime = new Date().getTime();
            
                if ((curTime - last_update) > 100) {
                    var diffTime = curTime - last_update;
                    last_update = curTime;
                    x = acceleration.x;
                    y = acceleration.y;
                    z = acceleration.z;
                    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
                    var status = document.getElementById("status");
            
                    if (speed > SHAKE_THRESHOLD) {
                        doResult();
                    }
                    last_x = x;
                    last_y = y;
                    last_z = z;
                }
            }
    
            function doResult() {
                //这里是弹窗  当弹窗弹出来,就禁止继续摇一摇,怎么写?
                
                congratulationTc();
                audio2.play();
                audio1.pause();
                $('.god_animation').removeClass('zindex');
         
            }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 深情不及久伴 普通会员 1楼

      在JavaScript中,我们不能直接禁用Device Motion事件。然而,我们可以禁用某些事件,使其在设备上不会触发。这可以通过创建一个空的事件处理程序来实现。

      以下是一个例子:

      ```javascript function eventHandler() {}

      // 创建一个空的事件处理程序 document.addEventListener('devicemotion', eventHandler);

      // 你可以像使用任何其他事件处理程序一样使用它 eventHandler();

      // 禁用事件处理程序 document.removeEventListener('devicemotion', eventHandler); ```

      在这个例子中,我们创建了一个名为eventHandler的函数,然后将其添加到document.addEventListener('devicemotion', eventHandler);中。这将创建一个事件处理程序,当我们向设备发送Devicemotion事件时,它将被调用。

      然后,我们调用eventHandler();来禁用这个事件处理程序。这将阻止事件处理器的任何进一步执行。

      最后,我们再次调用document.removeEventListener('devicemotion', eventHandler);来禁用这个事件处理程序。这将完全移除设备上的事件处理器。

      注意:这将阻止设备发送任何Devicemotion事件。如果你想阻止所有的Devicemotion事件,你可能需要更复杂的方法,例如使用addEventListener('devicemotion', null)或addEventListener('devicemotion', event => event.preventDefault())。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部