728x90
반응형

Ajax 연동시 history 문제(뒤로가기)

 

- 링크로 연결된 다음 페이지에서 history.back(); 하여도 Ajax로 불러들여두었던 페이지를 찾을 수 없다. history.back(); 으로 돌아온 주소는 페이지가 로드 된 시점에서의 값을 저장하고 있기 때문에 페이지 로드가 끝난 후 발생한 Ajax 페이지에 대해 처리할 수가 없는 문제가 있다. 이때 사용가능한 방법이다.

 

1. windows.history.pushState(data, title, url);

- URL history를 건드려준다. url 인수에 ajax에서 시동해야할 page변수와 해쉬(#)값을 넣어주면 된다.

  : 화면이 변화되지 않는다.

 

2. document.locaton.hash

- $('[name=이름값]').focus(); 와 같다고 생각하면 된다. 모바일 브라우저나 크롬등등에서 간혹 focus(); 를 인식하지 못할 때 사용한다.

 

예제.

<script type='Text/JavaScript'>

function ChkHash(id) {

    // id가 있으면 해쉬저장

    if( id ) {

        document.location.hash = id;

        location.href = "이동할파일?id=' + id;

    }

}

</script>

 

Ajax로 생성된 엘레멘트

<a name='<?=$id?>' href='JavaScript:ChkHash(<?=$id?>)' name='sThis'>어서와</a>

 

- <a name> 은 따로 원하는 포커스에 입력해주면된다.

- Ajax 생성 시간이 느려질 경우 정상 포거싱 되지 않으므로 $(document).ready(function() { ChkHash(); }); 로 문서가 로드될 때 if문으로 hash 를 체크해주어 setTimeout으로 딜레이후 페이지 리로드 해주고 hash를 삭제해주면 된다.

728x90
반응형

'JQUERY > 함수' 카테고리의 다른 글

[jQuery] jQuery ajax form 값 전부 넘기기 (serialize 사용)  (0) 2014.09.05
[jQuery] hide, show예제  (0) 2014.09.05
[jQuery]change() 이벤트  (0) 2014.09.05
jQuery 롤오버  (0) 2014.08.19
선택된 <select>  (0) 2014.08.19
Ajax Character Set (배열 처리)  (0) 2014.08.19
FORM 배열  (0) 2014.08.19
다중 창(popup, iframe)에서 부모창 컨트롤  (0) 2014.08.19
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,