2012-08-08 15 views
5

Windows Phone 7のphonegapアプリケーションを作成しようとしています。 "backbutton"イベントのドキュメントに従おうとしています(http://docs.phonegap.com/en/ 2.0.0/cordova_events_events.md.html#backbutton)しかし、私はそれを動作させるように見えることはできません。"backbutton"イベントは起動しません

"deviceready"イベントは発生しますが、 "backbutton"イベントは発生しません。 Visual Studio Windows Phoneエミュレータでコンパイルして実行すると、onDeviceReady関数が呼び出され、 "Device ready"が記録されますが、エミュレータの戻るボタンを押すと、アプリケーションは終了し、コンソールには何も記録されません。 戻るボタンを押すと、OnBackKeyDown関数が実行されます。公式ドキュメントからのコードの

コピー:

<html> 
    <head>  
     <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> 
     <script type="text/javascript"> 
      function onLoad() { 
       document.addEventListener("deviceready", onDeviceReady, false); 
      } 
      function onDeviceReady() { 
       console.log("Device ready"); 
       document.addEventListener("backbutton", onBackKeyDown, false); 
      } 
      function onBackKeyDown() { 
       console.log("Back button pressed"); 
      } 
     </script> 
    </head> 
    <body onload="onLoad()"> 
     <div></div> 
    </body> 
</html> 
+3

[SSCCE](http://robzu.com/sscce-short-self-contained-correct-compilable-example/) – RobB

+1

2.0.0以降のプロジェクトテンプレートを使用して物理デバイスでこの問題を再現できました。ノキアLumia 800 WP 7.5(7.10.8773.98)。バグレポートを記入し、ここにリンクを投稿することをお勧めします。 https://issues.apache.org/jira/secure/Dashboard.jspa – Loda

+0

私はバグ報告https://issues.apache.org/jira/browse/CB-1218に記入しました。それに投票してください! – Loda

答えて

3

私は、cordova-1.8.1.jsの一部をcordova-2.0.0.jsにコピーすることでこれを解決することができました。

1.8.1では、var NamedArgsを検索し、オブジェクト全体を2.0.0にコピーします。 2.0.0では

を検索:var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args);とに置き換えます

if (action == 'overridebackbutton') { 
    if (NamedArgs[service] && NamedArgs[service][action]) { 
     var argNames = NamedArgs[service][action]; 
     var newArgs = {}; 
     var len = Math.min(args.length,argNames.length); 

     for(var n = 0; n < len; n++) { 
      newArgs[argNames[n]] = args[n]; 
     } 

     args = newArgs; 
    } 
    else if(args && args.length && args.length == 1) { 
     args = args[0]; 
    } 
} 
var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args); 

これはかなり解決策ではないかもしれませんが、それは私のために動作します。

+0

上記のコードを使用すると、次のステートメントを使用して、デフォルトの戻るボタンの動作(exitアプリケーション)を有効/無効にすることができます: Cordova.exec(null、null、 "CoreEvents"、 "overridebackbutton"、[true]); または Cordova.exec(null、null、 "CoreEvents"、 "overridebackbutton"、[false]); – opznhaarlems

関連する問題