2011-03-22 2 views
68

, 내가 가진 사용자 정의 확인 팝업을 쓸 수 있었다 : 4 파이어 폭스 에서 지금파이어 폭스 4입니다 onbeforeunload 사용자 정의 메시지 3</strong> 파이어 폭스 <strong>에서

window.onbeforeunload = function() { 
    if (someCondition) { 
     return 'Your stream will be turned off'; 
    } 
} 

, 내 사용자 정의 메시지를 표시하지 않습니다. 그것이 제공하는 기본 메시지는 내 응용 프로그램이하는 것조차 정확하지 않습니다.

firefox 4 confirm

이 기본 메시지를 대체 할 수 있습니까?

+0

가능한 복제본 [Crossbrowser onbeforeunload?] (http://stackoverflow.com/questions/7389554/crossbrowser-onbeforeunload) – Aelios

답변

52

MDN에서 :

주 파이어 폭스 4 이상에서 반환 된 문자열은 사용자에게 표시되지 않았는지 확인합니다. 버그 588292을 참조하십시오.

"버그"는 실제로 (imho questionable) 기능입니다. Firefox 4에서 메시지를 표시 할 방법이 없습니다. 변경해야한다고 생각되면 Firefox 개발자가 알 수 있도록 버그에 대한 의견을 말하십시오. 사람들은 실제로 사용자 정의 문자열을 표시 할 수 있기를 원합니다.

+7

이것은 선악간에 사용될 수 있습니다. ** 좋은 ** : 귀하의 웹 캐스트가 종료되고 변경 사항이 저장되지 않았 음을 누군가에게 경고합니다. ** 나쁜 ** ** : 리버스 심리학을하는 바이러스 사이트 : "바이러스를 설치하지 않으려면 취소를 클릭하십시오". – JoJo

+1

이것은 분명히 특징입니다. 데이터가 입력 된 페이지를 떠나는 것과 관련된 문제는 보편적입니다. 99 %의 메시지가 성가 시거나 오도하기 때문에 나는 더 적극적인 경고가 필요하지 않습니다. 앱이 특별하지 않습니다. –

+17

예를 들어, 내 webradio에는 플래시 플레이어가 있고 실행 중일 때 "이 페이지를 닫으면 스트림 재생이 중지됩니다"라는 메시지가 표시됩니다. 그것은 "당신이 데이터를 잃어 버릴지도 모르는"것과는 꽤 다른 점입니다. – ThiefMaster

1

확인 메시지와 그것을 구현하는 시도 물론

window.onbeforeunload=function(){ 
    return confirm("Are you sure??"); 
} 

사용자가 다음 FF4 메시지가 표시됩니다 확인, 그래서 어쩌면 더 나은 화면이 한 번 로그인/방문 사이트 당. 쿠키가 트릭을 수행해야합니다.

+1

사용자가 "Are you sure?" 대화 상자를 열면 FF4 메시지가 표시되지 않거나 페이지가 언로드되지 않습니다. – pkaeding

+0

네,하지만이 버그가 수정 될 때까지 사용자에게 메시지를 줄 수 있습니다. 경고를 제안했지만, 언로드가 확인 질문을 표시하지 않는 것 같습니다. – Jguru

+1

HTML5 사양에 따르면 프롬프트, 경고, 확인 등의 호출은 무시 될 수 있습니다. 제 경우에는 확인이 작동하지 않았습니다. – IntelliData

3

내 해결 방법은 onbeforeunload에 경고를 표시하는 것입니다

window.onbeforeunload=function() { 
    if (/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { 
     alert("Blah blah. You have to confirm you are leaving this page in the next dialogue."); 
    } 
    return "Blah blah."; 
} 

은 (는 파이어 폭스에서 두 개의 대화, 다른 곳에서 하나의 대화를 보여줍니다.) 위의 대답에

+0

탭/브라우저를 닫을 때 두 개의 대화 상자가 표시됩니까? – ThdK

+0

@ThdK : 예, 두 개의 대화를 보여 주며 게시물에 메모를 추가했습니다. – xmedeko

+0

라인을 제거하면 '돌아 가기'가 표시됩니다. "; '첫 번째 대화 상자 만 표시합니다. – gomes

32

추가, 나는 해결 방법을 개선했다.

여기 jquery를 사용했습니다. 당신은 기본 자바 스크립트 funciton을 사용할 수 있습니다.

$(window).bind('beforeunload', function() { 
    if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { 
     if(confirm("Are you Sure do you want to leave?")) { 
      history.go(); 
     } else { 
      window.setTimeout(function() { 
       window.stop(); 
      }, 1); 
     } 
    } else { 
     return "Are you Sure do you want to leave?"; 
    } 
}); 

테스트를 거쳐 firefox 11에서도 작동합니다. :)

+0

좋은 해결책 .. –

+4

@Nasif, 우선 훌륭한 코드. 하지만 귀하의 window.setTimeout (function() {window.stop();}, 1); firefox 탭의 x ie close 버튼을 클릭하면 이 작동하지 않습니다. "창 비우기"의 기본 팝업이 작동하는 반면. – user367134

+0

예 위의 코드는 페이지가 닫히기위한 것이지, 창 닫기가 아닙니다. 감사합니다. – Nasif