. 그래서, 나는 여기서 해결 방법을 생각해 냈다. 사용자가 특정 버튼을 클릭하고 다른 버튼을 클릭하지 않는 경우에만 "onbeforeunload"를 호출해야했습니다. 바라기를 이것은 당신의 질문에 약간 빛을 비춰줍니다.
jsfiddle에서 일하게되었습니다. 데모에서는 설정 한 테스트를 통해 버튼 중 하나에서만 작동한다는 것을 분명히 알 수 있습니다. 그러나 한가지주의 할 점이 있습니다. 버튼을 클릭하고 페이지에 머 무르도록 선택하면 모든 후속 버튼/링크/리디렉션/재로드가 "onbeforeunload"를 트리거합니다. "버그"에 대한 자신 만의 해결책을 생각해 볼 수 있습니다. 용어)를 사용하여 사용자가 페이지에 머무르면 해당 반응을 일으키지 않습니다. 그러나 테스트 환경에서 수행하도록 요청한 작업을 수행하고 수행합니다. 여기
코드입니다 :
$(document).ready(function() {
$('.testButton').click(function() {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
편집 :
그래서, 같은 일을하는 다른 방법을 연구 한 후에, 나는 jQuery의 CSTE 연구진를 사용하여 버튼에 이벤트를 묶을 수있는 또 다른 방법을 가로 질러왔다() 메소드를 호출합니다. 코드는 here으로 볼 수 있습니다. 이전 코드가 주석 처리되었는지 확인하십시오. 이전과 마찬가지로 "버그"가 있지만 여전히 요청 된 기능을 제공합니다. 나는 호출에 오류가 window.onbeforeunload 얻을 파이어 폭스와 IE8 모두에
$(document).ready(function() {
$('.testButton').on("click", function (event) {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
:
여기에 대안이다. 파이어 폭스 오류는 "window.onbeforeunload는 함수가 아닙니다."이며 IE는 "객체가이 속성 또는 메서드를 지원하지 않습니다."라고 말합니다. – mutex
그래, 문제는 플러그인이 'addEventListener'/attachEvent'를 통해 이벤트 핸들러를 첨부한다는 것입니다. 'window.onbeforeunload'를 직접적으로 통하지는 않습니다. 'beforeunload' 함수에 대한 참조를 얻기 위해 플러그인 코드를 수정해야 할 것 같습니다. – casablanca
고마워요!그게 지금 작동합니다. 글로벌 처리기 사용을 피하기위한 제안? – mutex