5

Windows Phone 7 用の phonegap アプリを構築しようとしています。「戻るボタン」イベントのドキュメントに従っています (http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton )、しかし、私はそれを機能させることができないようです。

「deviceready」イベントは発生しますが、「backbutton」イベントは発生しません。Visual Studio Windows Phone エミュレーターでコンパイルおよび実行すると、onDeviceReady 関数が呼び出され、「デバイスの準備完了」がログに記録されますが、エミュレーターの [戻る] ボタンを押すと、アプリケーションが終了し、コンソールに何も記録されません。戻るボタンが押されると、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>
4

2 に答える 2

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);

これはかなりの解決策ではないかもしれませんが、私にとってはうまくいきます。

于 2012-09-13T11:54:42.687 に答える
2

修正はここにコミットされています: https://github.com/purplecabbage/incubator-cordova-wp7/commit/d04b87abb3c3822ef25438e1353a1d7d2e0d6628

来週初めに 2.1.0 がリリースされるまで待つか、ソースコードからアプリをビルドする必要があります。

于 2012-08-29T00:18:06.790 に答える