2011-09-30 5 views
4

여기에 요청하지 않아도 DOM으로 페이지가 시나리오jQuery를 모바일로드 내가

나는 3 개의 페이지가있다 : 1.html, 2.html, 3.html. 나는 방법 다음 이동합니다

1.html --- window.location="2.html" ---> 2.html

2.html --- <a href="3.html" /> ---> 3.html

 click Back button 

2. HTML --- window.location="1.html" - 2.html의 하지만 내용이 DOM이 1.html의 내용을 대체 내부에로드 된 마지막 단계의 1.html로드에서> 1.html

그래서 난 1.html에있어하지만, 2.html의 내용을보십시오.

현재 무슨 일입니까? jQuery mobile은 2.html의 내용을로드해야한다고 생각하는 이유는 무엇입니까?

전 역사와 뒤로 버튼과 관련이 있습니다. 뒤로 버튼을 사용하지 않고 1.html과 2.html 사이를 탐색하면 작동합니다.

업데이트 여기에 코드 http://jsfiddle.net/x6bxN/ HTML 상자에서 코드를 가져 와서 세 개의 개별 파일로 분리하려고합니다.

+0

아마도 내가하는 일을 이해하지 못할 수도 있습니다. 나는 그것을 재현 할 수 없기 때문에. 나는 당신이 묘사하고있는 것을 재현하려고 노력했지만, 그것은 나를 위해 잘 작동합니다. 여기 내 샘플 코드입니다. 참고 : 이것은 3 개의 개별 HTML 파일입니다. 동일한 붙여 넣기 페이지에 붙여 넣기 만하면됩니다. http://pastebin.com/JkneaERE –

+0

좀 더 코드를 게시 할 수 있습니까? 어쩌면 http://jsfiddle.net 페이지에서 탐색하는 방법을보고 싶습니다. –

+0

@PhillPafford 여기에 jsfiddle http://jsfiddle.net/x6bxN/ 링크가 있습니다. 세 파일에서 html을 가져 와서 삽입했습니다. HTML 상자에 넣으십시오. 재생산을 위해 파일을 세 개의 개별 파일에 저장하려고합니다. –

답변

0

jQuery 모바일에서 기록 및 뒤로 버튼을 처리하게하려면 $ .mobile.changePage를 사용하여 페이지를 변경해야합니다 (window.location = ..와 반대). 여기

상세 정보 : http://jquerymobile.com/demos/1.0rc1/docs/api/methods.html

+0

페이지를 전환하는 jQuery 모바일 기능에 대해 알고 있습니다. 나는 다른 기능을 해치기 때문에 그것들을 사용하고 싶지 않다. 그래서 나는 window.location을 사용하고 있습니다. jQuery 모바일이 내 페이지를 도용하려고하는 이유가 무엇인지 혼란 스럽습니다. 그것은 분명히 역사와 뒤로 버튼과 관련이 있습니다. –

0

당신이 봤어은 특별히 링크 데이터 아약스 = "false"를 설정하는 방법? 또는 rel = "external"이지만 다른 도메인으로 변경하려는 경우에만 사용됩니다.

둘 중 하나를 설정하지 않으면 JQM 하이재킹이 두려워집니다.

data-ajax = "false"로 작동하면 시도해보십시오.

사실 나는 정규 JQM-Ajax 링크와 비슷한 문제가 있습니다. 나는 아약스를 통해로드 페이지를 원하지만, 나는 이런 식으로 할 경우 :

  • 는 = 다시로드의 PAGE1을 page2b로 이동 page2a로 이동 PAGE1로 이동 ...

매우 성가신 이미 Github에 문제를 제기했지만, Ajax를 사용하고 싶지 않으므로 괜찮을 것입니다.

작동하는지 알려주세요.

3

jQM 범위 밖에서 탐색하고 있지만 1.html이 location.hash에 있습니다.등 뒤로 버튼을 클릭 사용자가, 벤 독일어의 hashchange 특별 이벤트 플러그인을 (사용 window 객체에 바인딩 된 hashchange 이벤트, 를 통해 처리 할 때와 같은 클릭 독립적으로 발생

해시 변경, jQuery Mobile에 포함). 해시 변경 이 발생하면 첫 번째 페이지가로드 될 때 hashchange 이벤트 처리기가 location.hash를 $ .mobile.changePage() 함수로 보내고,이 함수는 참조 된 페이지를로드하거나 표시합니다.

로드 할 때 location.hash가 초기 1.html을 가지며 window.location을 사용하여 새 페이지를 탐색 할 때 새 페이지를 추적하지 않는다고 가정합니다. 브라우저의 뒤로 버튼을 사용하고 있기 때문에 jQM은 마지막으로 추적 된 위치를 사용합니다.이 위치는 귀하의 경우 1.html입니다.

위치를 추적해야하는 경우 jQM의 $.mobile.changePage()을 사용하는 것이 좋습니다. JQM 탐색에 더는 문서에서 찾을 수 있습니다

+0

url에 링크에 # 기호가 없기 때문에 location.hash는 항상 비어 있습니다. –

+0

1.html에서 벗어나 자마자 jQM은이 위치를 urlHistory에 추가합니다. 나는 당신이 jQM을 사용하여 back 단추를 치는 해시 탐색을 추적하지 않기 때문에 urlHistory에서 1.html을 발견 할 것이라고 생각한다. 페이지로 전환하기 전에 사용자 정의 탐색을 location.hash에 푸시 할 수 있습니다.이 문제는 도움이 될 수 있습니다. –

+0

실제로 $ .mobile.changePage() 메소드를 사용하려고 시도하지만 연결해야합니다. 이벤트를 올바르게 준비된 이벤트 대신 pageinit을 사용해야한다는 것을 알고 있습니다. 그러나이 이벤트를 연결하는 방법과 같이 약간 혼란 스럽습니다. 여기에 다른 질문이 있습니다. http://stackoverflow.com/questions/7729729/jquery-mobile-binding-to-pageinit-event –

0

야생 추측. .ui-page 요소에 CSS 클래스 ui-page-active를 하드 코드하지 않았습니까? 두 페이지가 모두 표시 될 수 있기 때문입니다.

+0

아니요. 그러나 좋은 추측. –