가장 간단한 방법은 페이지 스크립트를 직접 재정의하고 이벤트를에 다시 할당하는 것 null
입니다.
window.onbeforeunload = null;
이것은 악의적 인 것이 아니라면 어디에서나 작동하며 계속해서 다시 할당해야합니다. 이 경우 설정을 유지하는 루프가 null
작동합니다.
while(true) {
if (window.onbeforeunload != null) {
window.onbeforeunload = null;
}
}
이제 일부 페이지는 이것을 잘 사용합니다. YouTube 업로드 페이지 가져 오기 : 업로드 중에 탐색하면 시간이 많이 걸리는 것일 수 있습니다. 또는 다시 작성하고 싶지 않은 웹 양식 또는 다시 입력하고 싶지 않은 메시지 (포럼 / 이메일)가있을 수 있습니다. 이 기능을 사용하면 보호됩니다.
또 다른 문제는 AJAX로 데이터를 저장하는 것과 같은 보조 목적으로이 페이지를 사용하는 페이지입니다. 이 이벤트를 사용하여 저장 조치를 트리거 할 수 있으며 사용자가 요청을 처리하기 위해 단추를 클릭 할 때까지 시간이 오래 걸리기를 바랍니다. 다시 말하지만, 이것은 종종 자신을 구하기 위해 수행됩니다.
그러나 분명히 우리는 많은 페이지가 이것을 악용으로 사용한다는 것을 알고 있습니다. 따라서 작업하려는 페이지를 알고 있으면 항상 화이트리스트 시스템을 가질 수 있습니다. 완전히 차단하지 않고이 작업을 차단할 수있는 방법이 없으며 window.onbeforeunload
취할 수있는 작업이 있습니다.
팝업 상자를 중지하는 동안 올바른 조치를 유지할 수있는 방법은 없습니다 (주어진 페이지 코드에 대한 사전 지식이 없음). 이 상자는 하지alert()
. 상자는의 의도 된 동작으로 브라우저에 의해 생성됩니다 onbeforeunload
. window.onbeforeunload
문자열 을 반환하기 위해 할당 한 함수를 만들어서 만듭니다 . 해당 문자열이 팝업에 인쇄됩니다.
window.onbeforeunload = function() {
//Whatever
return "WARNING! You have unsaved changes that may be lost!";
}
따라서 기능을 지우지 않으면 팝업을 차단할 수 없습니다.
또한 방법을 찾으면 AJAX가 실패합니다. 팝업은 요청없이 데이터를 잃을 수있는 시간을줍니다.
에 관해서는 onunload
, 이것을 막을 수 없습니다. 이 화재 때문에 후에 페이지 언로드합니다. 그러나 안전을 위해 항상 할 수 window.onunload = null;
있으며 관리해야합니다.