结合WP7.5,phonegap和jqm的历史问题

时间:2012-04-24 02:45:35

标签: windows-phone-7 jquery-mobile cordova

我有一个使用jqm的phonegap应用程序在android和ios中运行良好。

移植到WP7我的历史记录存在问题,特别是 history.back()(还有 .go(-1)等)。这指的是回到过去的“页面”在同一个物理html文件中的历史记录,只是一个不同的 data-role = page div。

在常规浏览器中使用jwm网站很好(在同一个html文件中使用单独的“页面”)。此外,当我们从应用程序中的一个html文件转到另一个html文件时,使用history.back()很好。这是WP7.5,jqm和PG的具体组合。

有没有人遇到过这方面的解决方案?这让我很疯狂,自从PG 1.4.1和jwm 1.0以来就一直存在问题。

编辑1:在WP7.5上初始化webview的phonegap过程可能会在加载后覆盖jqm历史覆盖。

编辑2:肯定与jqm无法修改历史记录有关。每次“页面”更改时,history.length仍为0.

编辑3:当我检查'历史'对象时,我发现没有 replaceState pushState 的功能 - 我知道jqm使用它来进行历史导航,也许这就是问题所在。

1 个答案:

答案 0 :(得分:1)

好的 - 这不是完美的,但这是一个适合我的解决方案(阅读:hack)。 适用于页面哈希更改,而不是实际的网址更改(但您可以为此添加正则表达式检查)。把它放在 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;
        }
    }
}