我正在使用英特尔XDK构建混合应用程序,我需要有关后退按钮及其功能的帮助。我只有一个index.html文件。所有“页面”都是,每个都有不同的ID。 我使用 activate_subpage(“#uib_page_10”)浏览它们;
$(document).on("click", ".firs_div_button", function(evt){
//#uib_page_10 is div with it's content
activate_subpage("#uib_page_10");
var thisPage = 1;
goBackFunction (thisPage); //call function and pass it page number
});
$(document).on("click", ".second_div_button", function(evt){
//#uib_page_20 is div with it's content
activate_subpage("#uib_page_20");
var thisPage = 2;
goBackFunction (thisPage); //call function and pass it page number
});
我在后退按钮上设置了 EventListener 硬件。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown() {
alert("hello");
navigator.app.backHistory();
}
这是实用的,但在我的情况下和我的应用程序中它不能正常工作。 当我从一个页面导航到另一个页面(5页/ div)并回击按钮时,有时它不会返回到第一页。它只是“回到”历史太深并关闭应用程序,而不会在关闭之前更改实际页面(视图)。
现在,我有一个想法,但我需要帮助。 我将不会使用历史记录,我将使用计数器和动态数组最多5个元素。
function goBackFunction (getActivePage) {
var active_page = getActivePage;
var counter = 0; // init the counter (max is 5)
var history_list = [counter][active_page]; // empty array
counter = counter + 1;
:
:
:
}
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown() {
//read the array and it's positions then activate:
activate_subpage("#PAGE_FROM_ARRAY");
counter = counter - 1;
if (counter == 0) {
//trigger the app exit when counter get's to 0.
navigator.app.exitApp();
}
}
这只是一个想法,没有经过测试。我想在数组中存储已打开页面的列表,当按下后退按钮时,要向后激活从数组列表中获取的页面。
我不知道怎么做,我不是专家:(可能有更好的方法来做这件事。如果有人有任何建议,我会接受它:D
答案 0 :(得分:0)
我在localStorage中保存一个数组,导航了所有页面,然后我使用数组上的pop()返回。目前,这是我回去的最佳方式。 这是我的代码:
//首先,创建表格"页面"
function init_pages_table()
{
var pages = new localStorageDB("pages", localStorage);
if (!pages.isNew())
{
pages.drop();
pages.commit();
}
var pages = new localStorageDB("pages", localStorage);
pages.createTable("Pages", ["nome"]);
// commit the database to localStorage
// all create/drop/insert/update/delete operations should be committed
pages.commit();
}
//在页面中添加页面:
function push_pagename(pagename)
{
var pages = new localStorageDB("pages", localStorage);
if (!pages.tableExists("Pages"))
{
init_pages_table();
pages = new localStorageDB("pages", localStorage);
}
pages.insert("Pages", {nome: pagename});
pages.commit();
}
//从数组中弹出一个页面:
function pop_pagename()
{
var output = '';
var id_page = ''
var pages = new localStorageDB("pages", localStorage);
var last_page = pages.queryAll("Pages", { limit: 1,
sort: [["ID", "DESC"]]
});
$.each(last_page, function(index,value){
output = value.nome;
id_page = value.ID;
return false;
});
var rowdeleted = pages.deleteRows("Pages", {ID: id_page});
pages.commit();
return output;
}
您还可以定义set,get,read的函数:
function set_backpage(pageurl)
{
push_pagename(pageurl);
}
function get_backpage()
{
return pop_pagename();
}
function read_backpage()
{
var output = '';
var id_page = ''
var pages = new localStorageDB("pages", localStorage);
var last_page = pages.queryAll("Pages", { limit: 1,
sort: [["ID", "DESC"]]
});
$.each(last_page, function(index,value){
output = value.nome;
id_page = value.ID;
return false;
});
return output;
}