关于html不同方法的Cordova navigator.app.backHistory按钮

时间:2016-06-06 21:50:55

标签: javascript android html cordova hybrid

我正在使用英特尔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

1 个答案:

答案 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;
}