2012-02-22 20 views
0

我在onDeviceReady中添加了一個事件監聽器來監聽後退按鈕事件,並在按下時用stopWatch進行響應。但是,它會在應用程序啓動時作出響應。爲什麼我的JavaScript代碼過早啓動?

<!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> 

回答

4
document.addEventListener("menubutton", stopWatch(), false); 

這立即調用stopWatch功能。你想要的東西是這樣的:

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

從聽者的設置刪除() - 這是調用函數不把它當作一個參數:

document.addEventListener("menubutton", stopWatch, false); 
相關問題