2014-11-17 3 views
1

HTML5 & jquery mobile을 사용하여 모바일 애플리케이션을 만들었으므로 뒤로 버튼을 누를 때마다 첫 페이지로 돌아 가야합니다. 약 역사가 돌아갈 때 항상 첫 페이지로 이동하고 싶습니다.

이의 내가 가서 가정 해 봅시다

  • 홈페이지
  • 제품
  • 검색
  • 검색 결과
  • :

    의 나는이 페이지가 있다고 가정 해 봅시다

    메인 -> 검색 -> 검색 결과 -> 제품을 선택한 다음 정보 페이지로 이동했습니다.

    돌아갈 때 (내가 소개 페이지에있어 경우), 역사는 다음과 같습니다 소개

    을 -> 제품 -> 검색 결과 -> 검색 -> 홈페이지

    내가 뒷 페이지를 누를 때마다 메인 페이지로 직접 돌아가서 역사를 거치지 않아도됩니다.

    나는 행운도없이 지난 몇 달 동안 이것을 찾으려고 노력했는데, 내 앱을 마무리하지 못하게했습니다.

    나는이 코드에 와서 답변을 검색 할 수 일 동안 노력했다

    : 그것은 것입니다

    $(window).on("navigate", function (event, data) { 
        var direction = data.state.direction; 
        if (direction == 'back') { 
        window.location = 'index.html#mainScreen'; 
        } 
    }); 
    

    : 나는이 코드를 가지고

    jQuery(document).ready(function($) { 
    
        if (window.history && window.history.pushState) { 
    
        $(window).on('popstate', function() { 
         var hashLocation = location.hash; 
         var hashSplit = hashLocation.split("#!/"); 
         var hashName = hashSplit[1]; 
    
         if (hashName !== '') { 
         var hash = window.location.hash; 
         if (hash === '') { 
          window.location = 'index.html#mainScreen'; 
         } 
         } 
        }); 
    
        } 
    
    }); 
    

    하지만 여전히 행운 방향이 다시 돌아 오면 메인 화면으로 돌아가고 메인 페이지로 돌아 가기 전에 마지막 페이지를 보여줍니다.

+0

는 http://stackoverflow.com/questions/17594413/js-or-jquery-browser-back-button-click-detector – EL3PHANTEN

+0

@billthelizard이 좋은 질문입니다 JQM을 사용하는 다른 사람들에게 도움이 될 것입니다. 솔직히, 당신은 워드 프로세서에서 그것을 찾을 수 없습니다. 그러나 JQM 코드를 깊이 파고 해결책을 찾기 위해 몇 가지 실험을 할 수 있습니다. 다시 투표하려면 투표 중입니다. – Omar

+0

JQM 이벤트를 사용하는 것이 훨씬 더 나은 해결책이 있습니다. 희망적으로 당신의 질문이 다시 열리면 그때까지'pagecontainerbeforechange'에 대해 읽어보십시오. – Omar

답변

1

탐색 관련 문제의 경우 항상 pagecontainerbforechange 이벤트에 의지하십시오. 페이지를 변경하기 전에 실행되는 이벤트입니다. popstate, hashchangenavigate입니다.

이 이벤트가 발생 두 번 각 페이지의 변화, 처음 그것은 객체문자열, 그리고 두 번째로 toPage을 반환합니다. toPage 값을 변경하려면 문자열이어야하므로 처음 실행될 때 변경해야합니다.

또한 내비게이션 방향 을 알려줄 수있는 options 개체를 반환합니다 (forward 또는 back).

  1. toPage문자열
  2. options.direction 당신이에서 사용자를 리디렉션 할 페이지입니다 back
  3. prevPage입니다 : 위의 코드에서
    $(document).on("pagecontainerbeforechange", function (e, data) { 
        if (typeof data.toPage == "string" && data.options.direction == "back" && data.prevPage[0].id == "aboutPage") { 
         data.toPage = "#mainScreen"; /* redirect to main page */ 
         data.options.transition = "flip"; /* optional */ 
        } 
    }); 
    

    , 당신은 있는지 확인해야 이면 버튼을 누르십시오.

Demo

+0

감사합니다. Omar, 저에게 도움이 되었어요. 안드로이드 폰에 대해 더 많은 테스트를하고 있습니다. 다시 thx. – ili

+0

내 프로젝트에서이 솔루션을 여러 html로 시도했지만 작동하지 않습니다. 동일한 페이지에 있습니다. – rdon

+0

@rdon 코드에 질문을 게시하고 달성하기를 원한다면, 내가 도와 줄 것입니다. – Omar

관련 문제