Ajax 방식의 하이브리드 어플리케이션을 구현할때

IOS Webview에서 location.href = url; 으로 다른페이지로 이동후 

이전 페이지 재진입시 javascript function이 onload, 등등 호출이 안되는 이슈가 있다.

이유는 캐쉬에 있는 데이터로 데이터로 페이지 재구성됨...

안드로이드는 호출이 되고... ㅠㅠ 


그때 해결방안.

onload 를 쓰지말고 onpageshow 함수를 쓰자. 

onpageshow

script

창이 나타나면 스크립트 실행

  1. <script type="text/javascript">
  2. window.onpageshow = function(){
  3.     initializeView();
  4. }
  5. </script>


page 재진입시 fuction 이 잘 호출된다.

하지만...

각 element 에 등록한 이벤트 핸들러나 리스너 (.on() 이나 .delegate() 등등등 )가 재 등록 되는 이슈가있다. 버튼을 누르면 두번눌림. (Android의 경우)

html 에서 직접 구현한 onclick 함수는 상관이 없다.

아래는 이벤트 함수 .live는 쓰지 맙시다...

$(elements).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(elements).on(events, selector, data, handler);        // jQuery 1.7+

이벤트 리스너는 JQuery 에 맞는 함수를 쓰자

초기화 호출되는 함수에서 핸들러를 초기화 시켜주자.

  1. var initializeView = function() {
  2.     $(document).off();
  3. .............
  4. }


끝.


'javascript' 카테고리의 다른 글

[위키] 데코레이터 패턴  (0) 2012.12.27
[위키]팩토리 메서드 패턴  (0) 2012.12.27
JavaScript-Garden 한글  (0) 2012.08.17
JSDT (Java script 코드 어시스트)  (0) 2012.08.17
javascript parttern (모듈 패턴!!!!! 꼭알자)  (3) 2012.08.07