2012-04-28 2 views
0

에서 승인 될 때까지 페이지를 떠나지 않도록하는 방법 :대답은이 코드를 JQuery와 UI 대화

$(window).bind('beforeunload', function() { 

     $("#dialogsendnotifications").dialog('open'); 
    }); 

    $("#dialogsendnotifications").dialog({ 

     autoOpen: false, 
     closeOnEscape: false, 
     buttons: { 
      "Yes": function() { 
       $(this).dialog('close'); 
      }, 
      "No": function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 

그래서 기본적으로 사용자가이 예 아니오 대화 상자를 팝업하지 멀리 이동하려고 할 때입니다 무엇. 문제는 대화 상자가 나타나지만 사용자가 버튼을 선택하기 전에 페이지에서 벗어나 탐색한다는 것입니다.

누군가가 대답을 선택할 때까지 기다리는 방법을 알려주실 수 있습니까? 과 같이 작업을 차단하려면 false

+0

강력하게 권장합니다. 그것은 정말 나쁜 사용자 경험이며 거의 모든 합법적 인 비즈니스 요구가 다른 방식으로 더 잘 구현됩니다. 예를 들어 탐색을 통해 우발적 인 데이터 손실을 피하는 방법은 중간 저장 (자동 저장 초안) 기능을 사용하는 것이 좋습니다. 연결이 끊어지면 어떻게 될까요? –

답변

3

. onbeforeunload 이벤트는 매우 제한적입니다. 당신이 할 수있는 일은 브라우저이 자체 대화 상자에서 사용할 문자열을 반환하는 것입니다. 당신은 아무것도 전혀 공상 할 수 없다.

다음은 예입니다. Live copy | source

jQuery(function($) { 

    $(window).bind("beforeunload", function(event) { 
    return "This is the message you're allowed to provide"; 
    }); 

}); 
-1

반환 : 당신은 할 수 없습니다

$(window).bind('beforeunload', function() { 
    $("#dialogsendnotifications").dialog('open'); 
    return false; 
}); 
+0

'onbeforeunload'는 다른 이벤트와 다릅니다. 'return false'는'onbeforeunload'에 영향을 미치지 않습니다. 브라우저가 "정말로이 페이지를 떠날까요?" 대화 상자에 단어 "false"가 표시됩니다. –

+0

재미 있습니다. 그것을 막으려면 event.preventDefault()를 말할 수 있습니까? – robrich

+0

@ robrich : 다시, onbeforeunload는 특별합니다. jQuery 문서를 보면'return false'는'event.preventDefault();'와'event.stopPropagation();'을 합친 것을 의미합니다. 그래서,'event.preventDefault();'는 도움이되지 않습니다. –

0

감사합니다.

$(window).on('beforeunload', function(){ 
return ''; 
}) 

을하지만 내 예를 들어, 나는 내 "beforeunload"α- 함수 내부 루프 (.each())가 : 나를 위해,이 도움이됩니다. 그런 다음 값을 반환하기 전에 루프를 종료하는 것을 잊지 말아야합니다.)