모바일프레임워크 back 버튼 관련
- 작성자 :
- 김*명
- 작성일 :
- 2015-10-15 14:52:12
- 조회수 :
- 1,024
- 구분 :
- 모바일
- 진행상태 :
- 완료
Q
현재 모바일 전자정부프레임워크로 프로젝트를 진행중에있습니다.
페이지 구성은
로그인 > 메인 메뉴 > 기타 업무 메뉴들
로그인이 완료 된 후에는 로그인 페이지로 돌아가지 않도록하기위해 메인 메뉴에서
if($.mobile.activePage.is('#main')){
popupConfirm("종료","프로그램을 종료하시겠습니까?","info","exit",fn_callback)
}else{
navigator.app.backHistory();
}
}, false);
코드를 이용해 종료 하도록 하였습니다.
그리고 login page에는 data-dom-cache="false"로 되어있는 상태입니다.
그런데 몇번 왔다갔다 하다보면 상단 소프트웨어 back 버튼은 정상 작동하는데
하드웨어 back 키를 누르면 메인메뉴를 건너서 로그인 페이지로 가는 현상이 발생합니다.
main 페이지에 pageshow 이벤트 시에
ui.prevPage.remove(); 코드를 넣어도 동일하게 로그인 페이지로 가네요
DOM에서는 삭제가 되어도 history stack에 login 페이지가 남아있어서 그런것이가요
어떻게 처리하면 될까요????
페이지 구성은
로그인 > 메인 메뉴 > 기타 업무 메뉴들
로그인이 완료 된 후에는 로그인 페이지로 돌아가지 않도록하기위해 메인 메뉴에서
if($.mobile.activePage.is('#main')){
popupConfirm("종료","프로그램을 종료하시겠습니까?","info","exit",fn_callback)
}else{
navigator.app.backHistory();
}
}, false);
코드를 이용해 종료 하도록 하였습니다.
그리고 login page에는 data-dom-cache="false"로 되어있는 상태입니다.
그런데 몇번 왔다갔다 하다보면 상단 소프트웨어 back 버튼은 정상 작동하는데
하드웨어 back 키를 누르면 메인메뉴를 건너서 로그인 페이지로 가는 현상이 발생합니다.
main 페이지에 pageshow 이벤트 시에
ui.prevPage.remove(); 코드를 넣어도 동일하게 로그인 페이지로 가네요
DOM에서는 삭제가 되어도 history stack에 login 페이지가 남아있어서 그런것이가요
어떻게 처리하면 될까요????
A
김종명님 안녕하세요.
프로그램 종료기능이 있는것으로 봐서
하이브리드앱으로 개발을 하시는듯 합니다.
화면상의 소스프웨어쪽으로는 이상이 없는데
하드웨어 뒤로가기 버튼의 경우 문제가 있는것으로 이해가 되었습니다.
뒤로가기 하드웨어 버튼은 물리적으로
뒤로가기가 되는것이기 때문에
별도 처리가 되어야 할 부분인듯합니다.
뒤로가기 버튼을 누르는 경우
URL을 캐치하여 로그인된 상태면
이동할 URL이 로그인페이지이면 이동을 취소하도록 처리하거나
로그인이 완료되면 webview의 히스토리를 삭제하는 방법이 있을듯 합니다.
this.appView.clearHistory();
폰갭에서 백버튼 제어는 아래와 같이 할수 있으니 참고하시면 좋을듯 합니다.
this.appView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP)
{
Toast.makeText(getApplicationContext(), "url : ", Toast.LENGTH_LONG).show();
//원한다면 여기에.
return true;
}
return onKeyDown(keyCode, event);
}
});
좋은 하루되십시요.
프로그램 종료기능이 있는것으로 봐서
하이브리드앱으로 개발을 하시는듯 합니다.
화면상의 소스프웨어쪽으로는 이상이 없는데
하드웨어 뒤로가기 버튼의 경우 문제가 있는것으로 이해가 되었습니다.
뒤로가기 하드웨어 버튼은 물리적으로
뒤로가기가 되는것이기 때문에
별도 처리가 되어야 할 부분인듯합니다.
뒤로가기 버튼을 누르는 경우
URL을 캐치하여 로그인된 상태면
이동할 URL이 로그인페이지이면 이동을 취소하도록 처리하거나
로그인이 완료되면 webview의 히스토리를 삭제하는 방법이 있을듯 합니다.
this.appView.clearHistory();
폰갭에서 백버튼 제어는 아래와 같이 할수 있으니 참고하시면 좋을듯 합니다.
this.appView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP)
{
Toast.makeText(getApplicationContext(), "url : ", Toast.LENGTH_LONG).show();
//원한다면 여기에.
return true;
}
return onKeyDown(keyCode, event);
}
});
좋은 하루되십시요.