Windows phone 7 结合WP7.5、phonegap和jqm的历史问题

Windows phone 7 结合WP7.5、phonegap和jqm的历史问题,windows-phone-7,jquery-mobile,cordova,Windows Phone 7,Jquery Mobile,Cordova,我有一个phonegap应用程序,它使用jqm,在android和ios中运行良好 移植到WP7时,我遇到了一个历史问题,特别是history.back()(但也有.go(-1)等)。这是指回到历史中,上一个“页面”位于同一个物理html文件中,只是一个不同的data role=pagediv 在常规浏览器中使用jwm站点是可以的(在同一html文件中有单独的“页面”)。此外,在应用程序中从一个html文件转到另一个html文件时使用history.back()也可以。它是WP7.5、jqm和P

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

移植到WP7时,我遇到了一个历史问题,特别是history.back()(但也有.go(-1)等)。这是指回到历史中,上一个“页面”位于同一个物理html文件中,只是一个不同的data role=pagediv

在常规浏览器中使用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将此用于历史导航,可能这就是问题所在。

好的-这不是完美的,但这里有一个适合我的解决方案(阅读: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;
        }
    }
}

好的-这并不完美,但这里有一个解决方案(阅读: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;
        }
    }
}