window.on before unload and window.on unload가 Firefox, Safari, Opera에서 작동하지 않습니까?
채팅 어플리케이션에서 어플리케이션이 닫히면 사용자에게 확인을 받아야 합니다.
그래서 제가.window.onbeforeunload
확인 경보를 위해.window.onunload
위해서logout()
.
하지만 IE와 Chrome에서 두 기능이 모두 작동합니다. (애플리케이션은 잘 작동합니다.)
window.onbeforeunload
오페라에서 작동하지 않으며 파이어폭스에서는 내 메시지가 표시되지 않습니다.window.onunload
사파리, 오페라, 파이어폭스에서 작동하지 않습니다.
내 자바스크립트 코드는 다음과 같습니다.
// Used for confirmation, to closing the window
window.onbeforeunload = function () {
return "Are you sure want to LOGOUT the session ?";
};
// Used to logout the session, when browser window was closed
window.onunload = function () {
if((sessionId != null)&&(sessionId!="null")&& (sessionId != ""))
logout();
};
저도 JQuery와 같은 기능을 사용해 보았습니다.
<script type="text/javascript">
$(window).on('beforeunload', function() {
return 'Are you sure want to LOGOUT the session ?';
});
$(window).unload(function() {
if ((sessionId != null) && (sessionId != "null") && (sessionId != "")) {
logout();
}
});
</script>
유감스럽게도 사용 중인 방법은 해당 브라우저에서 지원되지 않습니다.제 답변(이를 지지하지 않는 행동)을 지지하기 위해 아래 링크를 제공했습니다.
onbeforeunload
그리고.onunload
일을 하지 않는opera
... 이를 뒷받침하기 위해
오페라에서 내려받기 전에.
http://www.zachleat.com/web/dont-let-the-door-hit-you-onunload-and-onbeforeunload/
비록onunload
이벤트가 완전히 작동하는 것은 아닙니다.onunload
사용자가 링크를 클릭하여 저장되지 않은 양식의 페이지에서 벗어날 경우 경고를 표시합니다.
onunload
일을 하지 않는safari
... 이를 뒷받침하기 위해
https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
당신은 차라리 사용을 시도할 수 있습니다.pagehide
safari 브라우저에서 이벤트 대신onunload
.
onunload
일을 하지 않는firefox
... 이를 뒷받침하기 위해
그들은 FF에서도 아직 해결책을 제시하지 못하고 있습니다.
다음은 firefox 및 chrome을 위한 작동 솔루션입니다.
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
var confirmationMessage = 'Are you sure to leave the page?'; // a space
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
});
저는 jQuery's를 사용하여 IE 및 FF에서 작동할 수 있었습니다.
$(window).bind('beforeunload', function(){
});
대신: unload, on unload 또는 on unload 전에
해결책을 찾았습니다.onunload
Ajax 비동기 요청을 동기 요청으로 변경하여 Opera를 제외한 모든 브라우저에서 사용할 수 있습니다.
xmlhttp.open("POST","LogoutAction",false);
오페라를 제외한 모든 브라우저에서 잘 작동합니다.
다운로드 시 이벤트가 일부 브라우저에서 호출되는 것은 아닙니다.더 나쁜 것은 언로드 이벤트 전에 on의 반환 값을 확인할 수 없습니다.그러면 로그아웃 기능을 실제로 수행할 수 없습니다.
하지만 이것을 해킹할 수 있습니다.
언로드 전 이벤트에서 로그아웃을 먼저 호출합니다.사용자에게 메시지를 표시합니다.사용자가 로그아웃을 취소하면 Onfocus 이벤트를 사용하여 로그아웃을 자동으로 다시 로그인합니다.좀 뒤로 가긴 했지만, 효과가 있을 것 같아요.
'use strict';
var reconnect = false;
window.onfocus = function () {
if (reconnect) {
reconnect = false;
alert("Perform an auto-login here!");
}
};
window.onbeforeunload = function () {
//logout();
var msg = "Are you sure you want to leave?";
reconnect = true;
return msg;
};
Firefox는 메시지를 언로드하기 전에 사용자 지정을 표시하지 않습니다.Mozilla는 오해의 소지가 있는 텍스트를 보여줄 수 있는 악의적인 사이트로부터 최종 사용자를 보호하고 있다고 말합니다.
언급URL : https://stackoverflow.com/questions/14645011/window-onbeforeunload-and-window-onunload-is-not-working-in-firefox-safari-ope
'programing' 카테고리의 다른 글
numpy/ctype을 사용하여 C-할당 메모리 버퍼를 노출하는 보다 안전한 방법은? (0) | 2023.10.26 |
---|---|
워드프레스:next_post_link() / previor_post_link() 매개변수에 if-else 문을 삽입하시겠습니까? (0) | 2023.10.26 |
각도가 있는 Adobe Edge Animate 사용JS 및 각도UI 라우터 (0) | 2023.10.26 |
Oracle: 자동 증분 ID 열을 사용하여 보기 생성 (0) | 2023.10.26 |
날짜가 DateTime보다 크거나 같은 라라벨 웅변 (0) | 2023.10.26 |