2016-06-06 9 views
0

Я строю гибридное приложение с Intel XDK, и мне нужна помощь с кнопкой «Назад», и это функция. У меня есть только один файл index.html. Все «страницы» являются «и каждый из них имеет разные идентификаторы. Я просматриваю их, используя activate_subpage ("# uib_page_10");Кордова navigator.app.backHistory button on html другой подход

$(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 страниц/разделов) и нажимаю кнопку, иногда она не возвращается на первую страницу. Он просто «возвращается» к истории слишком глубоко и закрывает приложение, не меняя фактическую страницу (представление) перед закрытием.

Теперь у меня есть идея, но мне нужна помощь в этом. Я не буду использовать историю назад, я буду использовать счетчик и динамический массив для максимум 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(); 
} 
} 

Это только идея, не проверенная. Я хотел бы сохранить список открытых страниц в Array и при нажатии кнопки «Назад» активировать страницы, взятые из списка Array, назад. .

Я не знаю, как это сделать, я не специалист :(Существует может быть Тесто способ сделать это Если кто-то есть какие-либо предложения, я приму его: D

+0

Функциональность кнопки возврата зависит от того, как приземлился на текущей странице. Если вы использовали «window.location.replace» для перехода со страницы 1 на страницу2, тогда страница1 не будет отслеживаться в истории, и в этом случае вы не сможете вернуться назад к странице 1 при нажатии кнопки «Назад». – Gandhi

ответ

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

Вы можете также определить функции для набора, получить, прочитать:

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

 Смежные вопросы

  • Нет связанных вопросов^_^