2010-08-12 2 views
4

이 jQuery 코드가 있습니다.창 beforeunload가 두 개의 대화 상자를 표시합니다.

$(function() { 
    $(window).unbind("beforeunload"); 
    $(window).bind("beforeunload", function() { 
     return confirm("Really?"); 
    }); 
}); 

내가 창을 닫으면 확인 요청을 받고 "취소"를 누르면 두 번째 확인 메시지가 나타납니다.

"이 페이지에서 벗어나 실까요?" "계속, 현재 페이지에 남아 있으려면 취소를 누르십시오."

"거짓"

왜 두 번째 대화 상자가 표시되고 제거 할 수있는 방법이 있습니까?

가 될 코드를 변경 한 편집;

$(function() { 
    $(window).bind("beforeunload", function() { 
     return "slappy?"; 
    }); 
}); 

그러나 확인 메시지가 나타나지 않습니다. 내가 경고를 걸고 경고를 볼 수 있기 때문에 이벤트가 시작됩니다.

편집 2

이에 코드를 바꿨나요;

window.onbeforeunload = function() { 
    var txtBlog = $('#tbxNote').val(); 
    if (txtBlog != "") 
     return "You have not saved your blog entry."; 
} 

작동하지만 다른 메시지가 내 메시지 아래에 있습니다.

"이 페이지에서 벗어나 실까요?"

"블로그 항목을 저장하지 않았습니다."

"계속하려면 확인을 누르고 현재 페이지에 머물려면 취소를 누르십시오."

+0

이것은 IE8에서 발생합니다. 체크하지 않았다면 FF – griegs

+0

당신은'$ (window) .unbind ("beforeunload"). bind ("beforeunload"), ...'를 사용하여 줄이거 나 할 수있다. 그러나 그것은 완전히 당신에게 달려있다. –

+0

Re edit 2 : 아래에서 언급 한 바와 같이, 추가 텍스트를 변경하거나 제거 할 수 없습니다. 그렇지 않으면 악성 웹 사이트가 사기성 메시지를 표시하여 사람들을 혼란스럽게 할 수 있습니다. –

답변

5

그냥 사용

return "Really?"; 

beforeunload 이벤트 당신이 표준에 표시 할 메시지 대화 "당신이 확신"을 포함하는 문자열을 반환해야합니다.

+2

그리고 당신이 모르고 궁금해하는 경우에 ... 내장 된 "Are you sure ..."및 "Press OK to ..."메시지를 무시할 수있는 방법이 없습니다. –

+0

확인은 실행되지 않습니다. $ (함수() { $ (창) .bind ("beforeunload", 기능() { 리턴() "썩을?"; }); }); 의견이 있으십니까? – griegs

+0

두 개의 대화 상자에서 하나의 대화 상자로 이동했거나 대화 상자가 제로가 되었습니까? –

관련 문제