我和科多瓦一起开发了一个混合应用程序。这个应用程序非常简单,所以我没有使用框架。几乎所有页面都是使用jQuery的ajax()
方法通过Ajax注入的,然后使用HTML5历史API通过pushState()
方法添加到历史记录中。
为了让用户回到以前访问过的页面(历史上的一个页面),我创建了一个按钮。我侦听backbutton
事件,并点击该按钮,当事件被触发时,我执行以下处理程序:
onBackButton: function() {
window.history.length === 0 ? navigator.app.exitApp() : window.history.back();
}
为了确保最大程度的兼容性,我还将history.js添加到项目中。
它在安卓和Mac上的iOS模拟器上都很有魅力,但在真正的设备上却不起作用。所发生的是iOS捕获事件,但是方法的执行不会改变页面。我已经在StackOverflow上尝试过几种基于以前答案的方法,但没有成功。一些例子是:history.back()在phonegap构建中不工作和Phonegap按钮不工作的navigator.app.backHistory()。
我能尝试什么?
发布于 2014-07-02 13:05:16
不知道科多瓦自己有没有领航员。但是我通常用这个函数来回溯:
function goBack() {
//or history.back()
history.go(-1);
navigator.app.backHistory();
}
但无法测试。
编辑:由于您没有通过ajax完成完全刷新和加载几乎所有的操作,所以您可能必须自己实现历史记录。iphone在返回时只使用javascript页面有一些问题。既然你把自己的行为推到历史上去,就不应该太难了:
window.addEventListener("popstate", function(e) {
//get it from the history, execute your functions to show the page as usual
});
https://stackoverflow.com/questions/24352757
复制相似问题