1

androidとiosで正常に動作するjqmを使用するphonegapアプリがあります。

WP7への移植には、履歴、特にhistory.back()(ただし、.go(-1)など)に問題があります。これは、前の「ページ」が同じ物理htmlファイルにあり、 data-role = pagedivが異なるだけの履歴に戻ることを意味します。

通常のブラウザでjwmサイトを使用することは問題ありません(同じhtmlファイルに別々の「ページ」があります)。また、アプリで1つのhtmlファイルから別のhtmlファイルに移動するときにhistory.back()を使用することもできます。これは、WP7.5、jqm、およびPGの特定の組み合わせです。

誰かがこれに対する解決策に出くわしましたか?それは私を夢中にさせており、PG1.4.1とjwm1.0以来問題となっています。

編集1:WP7.5でWebビューを初期化するphonegapプロセスが、ロード後にjqm履歴オーバーライドを何らかの形でオーバーライドする可能性があります。

編集2:間違いなくjqmが履歴を変更できないことと関係があります。「ページ」が変更されるたびに、history.lengthは0のままです。

編集3:「history」オブジェクトを調べたところ、replaceStateまたはpushStateの関数がないことがわかりました-jqmがこれを履歴ナビゲーションに使用していることを知っています。おそらくそれが問題です。

4

1 に答える 1

1

わかりました-これは完璧ではありませんが、これが私にとってはうまくいく解決策です(読んでください:ハック)。実際のURLの変更ではなく、ページハッシュの変更に対してのみ機能します(ただし、そのための正規表現チェックを追加できます)。これをondevicereadyで実行されるコードのどこかに入れます:

if (device.platform == 'WinCE') {
    window.history.back = function () {
        var p = $.mobile.urlHistory.getPrev();
        if (p) {
            $.mobile.changePage("#" + p.pageUrl, { reverse: true });
            $.mobile.urlHistory.stack.splice(-2, 2);
            $.mobile.urlHistory.activeIndex -= 2;
        }
    }
}
于 2012-04-24T04:31:14.367 に答える