2014-04-14 1 views
0

닫힌 대화 상자가 열려 있기를 원합니다. page2 뒤로 돌아 가지 않습니다.대화 상자를 닫고 다른 링크를 반환하는 방법 (되돌아 가지 않음)?

이 같은 대화 상자에서 pagehide 이벤트를 바인딩했는데 먼저 페이지 1로 돌아간 다음 page2를 열고 페이지 2를 열지 마십시오. 당신이 페이지를 정의 JQM 1.4에서

$("#dialog").bind("pagehide", function() { 
    $.mobile.changePage("#page2"); 
}); 
<div data-role="page" id="page1"> 
    <div data-role="content"> 
    page1 
    <a href="#dialog" data-iconpos="notext" data-transition="slide">open dialog</a> 
    <a href="#page2" data-iconpos="notext" data-transition="slide">open page2</a> 
    </div> 
</div> 
<div data-role="page" id="page2"> 
    <div data-role="content">page2</div> 
    <a href="#page1" data-iconpos="notext" data-transition="slide">open page1</a> 
</div> 
<div data-role="dialog" id="dialog"> 
    <div data-role="header"><h1>dialog</h1></div> 
    <div>Dialog</div> 
</div> 
+0

사용중인 버전? – Omar

+0

@Omar jquery v2.1.0, jquery mobile v1.4.2 및 Iam 죄송합니다. 나는'window.history.pushState'를 사용해 봅니다. 이제 작동합니다. – consatan

+0

@Omar 죄송합니다. 제 실수입니다. window.history.pushState 앞에'pagehide'를 사용했는데, Lumia 920의 IE10에서 테스트했기 때문에'window.history.pushState'를 지원하지 않습니다. – consatan

답변

2

data-dialog="true"을 할당하여 대화 상자처럼 보이게하려면 : 1

<div data-dialog="true" id="dialog"> 

가까이에 리디렉션, 당신이 이런 식으로 처리 할 수 ​​:

$(document).on("pagecreate", "#page1", function() { 
    $("body").on("pagecontainerbeforetransition", function (event, ui) { 
     var oldpageid = $("body").pagecontainer("getActivePage").prop("id"); 
     var newpageid = ui.toPage.prop("id"); 
     if (oldpageid == "dialog" && newpageid == "page1") { 
      $("body").pagecontainer("change", "#page2", {"transition": "slide"}); 
      return false; 
     } 
    }); 
}); 

전환 전 기본적으로 페이지를 잡아 당기고 대화 상자에 있는지 확인한 후 page1로 이동합니다 (있는 경우).

DEMO

관련 문제