41

jquery mobile と cordova を使用して RSS リーダーをプログラムしようとしています。私の RSS リーダーは 3 つのページで構成されています (同じ HTML ドキュメント内: page1、page2、page3)。プログラムを終了するように (ハードウェア) 戻るボタンの動作をオーバーライドしようとしています。プロジェクトのセットアップで間違いを犯していないことを確認するために、PhoneGap サンプル プロジェクトを使用して Eclipse にロードしました。すべてのサンプル関数が機能したので、index.html と res フォルダーを phonegap の例に移動しました。私の index.html では、次のスクリプトをインポートします。

<script src="res/jquery-1.7.1.min.js"></script>
<script src="res/jquery.mobile-1.1.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8" src="main.js"></script>

私のmain.jsファイルは次のようになります。

document.addEventListener("backbutton", function(e){
if($.mobile.activePage.is('#homepage')){
    e.preventDefault();
    navigator.app.exitApp();
}
else {
    navigator.app.backHistory()
}
}, false);

私のスクリプトのバージョンは、最初のコード サンプルで確認できます。Xperia Arcの戻るボタンを押したときにアプリを終了するようにコードを機能させる方法についてのアイデアはありますか? 必要に応じて、完全なコードをアップロードできます。

編集: Android フォンで phonegap(cordova) ビープ機能をテストしましたが、動作するため、スクリプトの実装に問題はありません。main.js ファイルにあるものでなければなりません。おそらく、jquerymobile の backbutton 関数と phonegap の backbutton 関数との互換性の問題です。

4

5 に答える 5

87

デバイスがイベント リスナーを追加する準備が整うまで待つ必要があります。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    document.addEventListener("backbutton", function(e){
       if($.mobile.activePage.is('#homepage')){
           e.preventDefault();
           navigator.app.exitApp();
       }
       else {
           navigator.app.backHistory();
       }
    }, false);
}
于 2012-09-11T15:04:18.177 に答える
8

Jquery Mobile を使用したくない場合は、次のコードのように、@mornaner の回答で $.mobile.activePage.is('#homepage') を document.getElementById('#homepage') に変更します。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    document.addEventListener("backbutton", function(e){
       if(document.getElementById('#homepage')){
           e.preventDefault();
           navigator.app.exitApp();
       }
       else {
           navigator.app.backHistory()
       }
    }, false);
}

このようにして、この目的のためだけに意味不明な Jquery Mobile をダウンロードする必要はありません。また、activePage は JQuery モバイル 1.4.0 で廃止され、1.5.0 から削除されます。(代わりに、pagecontainer ウィジェットの getActivePage() メソッドを使用してください)

于 2014-05-29T22:15:08.520 に答える
0
function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    //enter code here enter code heredevice APIs are available
    //enter code here
    function onDeviceReady() {
        // Register the event listener
        document.addEventListener("backbutton", onBackKeyDown, false);
    }

    // Handle the back button
    //
    function onBackKeyDown() {
    }
于 2016-12-21T06:51:17.807 に答える