gpt4 book ai didi

javascript - History.pushState 和遍历历史 - PhoneGap/Android

转载 作者:行者123 更新时间:2023-11-29 18:01:08 25 4
gpt4 key购买 nike

我正在为客户编写 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) {}
};

因此,这正确地添加了项目。但是,如果我进入历史记录的三个级别(homelistings -> 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() 被调用,例如当点击列表或按下按钮时。

此场景适用于应用中的任何其他导航组合。

有没有人有这方面的经验或类似的经验?

最佳答案

我相信你的函数应该是这样的,设置了 skip_history 标志:

// 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, null, true);
}
catch(e) {}
};

由于您不想将刚刚弹出的历史记录推回堆栈。

关于javascript - History.pushState 和遍历历史 - PhoneGap/Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16034539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com