我正在为客户编写一个 Android 应用程序。我一直在使用自己的框架来创建应用程序。
这个框架在 iPhone 上运行没有问题,但是当我将它应用到 Android/Phonegap 时,我遇到了后退按钮的问题。我的解决方案是调用 History 对象以在查看不同页面时创建项目。这段代码的要点如下:
'hook_call': function (name, data, callback, skip_history) {
if (typeof callback != 'function') {
callback = function () {};
}
app.handlers[name].call(this, data, callback);
window.app.current_hook = name;
// Manage history
if(!skip_history ) {
history.pushState({'page': name, 'data': data}, null, '#'+name);
}
}
我的 onpopstate 函数:
// Manage history
window.onpopstate = function(event) {
try {
if(window.app.current_hook != event.state.page)
window.app.hook_call(event.state.page, event.state.data);
}
catch(e) {}
};
因此,这会正确添加项目。但是,如果我在历史记录中说三个级别 ( home
, listings
-> view_listing
) 并从中按回,view_listing
我将被带到该listings
部分,这是正确的,但是任何进一步的按都会使我处于listings
,它不会再向后移动。
当我在刚刚解释的导航步骤之后查看日志时,我看到了这些虚假项目:
04-16 10:22:39.320: D/CordovaWebView(1148): The current URL is: file:///android_asset/www/index.html#listing
04-16 10:22:39.320: D/CordovaWebView(1148): The URL at item 0 is:file:///android_asset/www/index.html
04-16 10:22:39.400: D/CordovaWebView(1148): The URL at index: 0is file:///android_asset/www/index.html
04-16 10:22:39.400: D/CordovaWebView(1148): The URL at index: 1is file:///android_asset/www/index.html#welcome
04-16 10:22:39.400: D/CordovaWebView(1148): The URL at index: 2is file:///android_asset/www/index.html#listings
04-16 10:22:39.410: D/CordovaWebView(1148): The URL at index: 3is file:///android_asset/www/index.html#listing
我应该添加它以访问不同的页面,hook_call()
例如在点击列表或按下按钮时调用。
这种情况适用于通过应用程序进行导航的任何其他组合。
有没有人有这方面或类似的经验?