1

jquery mobile と phonegap を使用して Android アプリケーションを作成しています。index.html にロードされたカスタム スクリプトからという名前の関数へのコールバックを使用することを推奨する短いガイド「Phonegap をプログラミングするための 20 のレシピ」に従いましたonPageLoad()。ここで、Page は宛先ページの html ファイルの名前です。

ただし、スクリプトタグを使用して data-role="page" div 内に含めた JavaScript が読み込まれていないため、行き詰まっています。

https://stackoverflow.com/a/8838639/153382は、これが機能するはずであると述べている jQuery モバイル ガイドを指しています。ガイドを読みましたが、うまくいきません。それで?

これが機能しなくなるjquery mobileで何かが変更されましたか?

更新 一部のテストでは、インライン スクリプトが実行されることが示されていますが、スクリプトの src 属性は、ファイルから読み込もうとしているスクリプトに対して評価されていません。

も試し<script type="text/javascript">$.getScript("js/lookup.js");</script>ました。それもうまくいきませんでした。

コード

の後に index.html に含まれる common.js <div data-role="page">...</div>:

<script type="text/javascript" charset="utf-8" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/common.js"></script>

common.js の関連コンテンツ:

function executeCallback() {
    if (isPhoneGapReady) {
        // get name of current html page
        var pages = currentUrl.split("/");
        var currentPage = pages[pages.length - 1].
            slice(0, pages[pages.length - 1].indexOf(".html"));

        // captalize the first letter and execute the function
        currentPage = currentPage.charAt(0).toUpperCase() +
            currentPage.slice(1);

        if (typeof window['on' + currentPage + 'Load'] ==
            typeof(Function)) {
            window['on' + currentPage + 'Load']();
        }
        alert('on' + currentPage + 'Load: ' + typeof window['on' + currentPage + 'Load']);
            // says onLookupLoad: undefined
    }
}

$(document).bind("pageload", function(event, data) {
    init(data.url);
});

window.onload = init;

init(url)呼び出すonDeviceReady()呼び出しexecuteCallback()

lookup.html には、次の行が含まれています<div data-role="page">

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

1 に答える 1

1

問題は、Eclipse が新しい apk を生成していないことだったようです。これは、assets ディレクトリが変更されたためだと思いますが、src ディレクトリは変更されていません。bin フォルダーの apk を削除してエミュレーターを実行すると、コードは設計どおりに動作します。

于 2012-05-21T13:50:00.037 に答える