为什么我的JavaScript代码会过早启动?

为什么我的JavaScript代码会过早启动?,javascript,android,html,dom,cordova,Javascript,Android,Html,Dom,Cordova,我在onDeviceReady中添加了一个事件侦听器,用于侦听后退按钮事件,并在按下秒表时使用秒表进行响应。但是,当应用程序启动时,它会做出响应 <!DOCTYPE html> <html> <head> <title>UNH BSApp</title> <script type="text/javascript" charset="utf-8" src="phonegap.js"></s

我在onDeviceReady中添加了一个事件侦听器,用于侦听后退按钮事件,并在按下秒表时使用秒表进行响应。但是,当应用程序启动时,它会做出响应

    <!DOCTYPE html>
<html>
  <head>
    <title>UNH BSApp</title>

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
    <script type="text/javascript" charset="utf-8">

    // The watch id references the current `watchAcceleration`
    var watchID = null;

    // Wait for PhoneGap to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // PhoneGap is ready
    //
    function onDeviceReady() {
        document.addEventListener("backbutton", stopWatch(), false);
        startWatch();
    }

    // Start watching the acceleration
    //
    function startWatch() {
        document.addEventListener("menubutton", stopWatch(), false);
        // Update acceleration every 0.1 seconds
        var options = { frequency: 10 };

        watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
    }

    // Stop watching the acceleration
    //
    function stopWatch() {
        alert("Hello!");
        if (watchID) {
            navigator.accelerometer.clearWatch(watchID);
            watchID = null;
        }
    }

    // onSuccess: Get a snapshot of the current acceleration
    //
    function onSuccess(acceleration) {
        var element = document.getElementById('accelerometer');
        element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
                            'Acceleration Y: ' + acceleration.y + '<br />' +
                            'Acceleration Z: ' + acceleration.z + '<br />' +
                            'Timestamp: '      + acceleration.timestamp + '<br />';
    }

    // onError: Failed to get the acceleration
    //
    function onError() {
        alert('onError!');
    }

    </script>
    <style>
        #start {
            display:block;
            border:solid;
        }
    </style>
  </head>
  <body>
    <div id="accelerometer">Waiting for accelerometer...</div>
    <div id="start">Start</div>
  </body>
</html>

UNH BSApp
//watch id引用当前的“watch加速”`
var-watchID=null;
//等待PhoneGap加载
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//PhoneGap已经准备好了
//
函数ondevicerady(){
document.addEventListener(“backbutton”,秒表(),false);
startWatch();
}
//开始观察加速度
//
函数startWatch(){
document.addEventListener(“菜单按钮”,秒表(),false);
//每0.1秒更新一次加速度
var选项={频率:10};
watchID=navigator.Accelerator.watchAcceleration(onSuccess、onError、options);
}
//不要再看加速度了
//
功能秒表(){
警惕(“你好!”);
if(watchID){
navigator.Accelerator.clearWatch(watchID);
watchID=null;
}
}
//onSuccess:获取当前加速度的快照
//
成功时的功能(加速){
var元素=document.getElementById('Accelerator');
element.innerHTML='Acceleration X:'+Acceleration.X+'
'+ “加速度Y:”+加速度.Y+”
”+ “加速度Z:”+加速度.Z+”
”+ '时间戳:'+acceleration.Timestamp+'
'; } //OneError:无法获取加速度 // 函数onError(){ 警报('onError!'); } #开始{ 显示:块; 边框:实心; } 等待加速计。。。 开始
从侦听器的设置中删除
()
-这是调用函数而不是将其作为参数传递:

document.addEventListener("menubutton", stopWatch, false);
从侦听器的设置中删除
()
-这是调用函数而不是将其作为参数传递:

document.addEventListener("menubutton", stopWatch, false);
这会立即调用秒表功能。你想要的是:

 document.addEventListener("menubutton", stopWatch, false);
                                                 ^^ no parens!
这会立即调用秒表功能。你想要的是:

 document.addEventListener("menubutton", stopWatch, false);
                                                 ^^ no parens!