2016-06-06 3 views
0

인텔 XDK와 하이브리드 응용 프로그램을 만들고 있는데 뒤로 버튼과 도움이 필요합니다. 하나의 index.html 파일 만 있습니다. 모든 "페이지"는 각각의 ID가 다릅니다. 나는 그들을 통해 탐색 activate_subpage ("# uib_page_10");코르도바 navigator.app.back 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 페이지/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

뒤로 버튼의 기능은 그 방법에 의존 'page.location.replace'를 사용하여 page1에서 page2로 이동하면 history1에서 page1이 추적되지 않고이 경우 뒤로 버튼 클릭시 page1로 다시 이동할 수 없습니다. – 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; 
}