1

我有一个使用 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:当我检查“历史”对象时,我发现没有用于replaceStatepushState的功能- 我知道 jqm 将其用于历史导航,也许这就是问题所在。

4

1 回答 1

1

好的 - 这并不完美,但这是一个适合我的解决方案(阅读:hack)。它适用于页面哈希更改,而不是实际的 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 回答