2011-09-11 2 views
3

내가 실수로 등록 페이지를 떠나는 사용자를 중지에 대한 다음과 같은 솔루션이있다 :jQuery를, onBeforeUnload과 ASP.Net 양식

이 코드의 대부분은 여기에 StackOverflow에 다른 질문에서, 그리고
var warning = true; 

function CheckExit() { 
    if (warning) { 
     return "Changes done. Remember to save, blah blah."; 
    } 
} 
window.onbeforeunload = CheckExit; 

addToPostBack = function (func) { 
    var old__doPostBack = __doPostBack; 
    if (typeof __doPostBack != 'function') { 
     __doPostBack = func; 
    } else { 
     __doPostBack = function (t, a) { 
      if (func(t, a)) old__doPostBack(t, a); 
     } 
    } 
}; 

$(document).ready(function() { 

    $('#aspnetForm').submit(function() { 
     warning = false; 
     return true; 
    }); 

    addToPostBack(function (t, a) { 
     warning = false; 
     return true; 
    }); 

}); 

가 잘 작동 내 로컬 디버깅 페이지에; 모든 ASP.Net 컨트롤 (링크 단추, 단추)은 경고없이 클릭 할 수 있지만 사용자가 창을 닫거나 멀리 탐색하려고하면 경고가 표시됩니다.

그러나 내 서버에 배포 할 때 ASP.Net 컨트롤을 클릭하면 경고가 나타납니다 (실제로 "저장"버튼을 클릭하면 변경 사항이 저장되지 않는다는 경고 메시지를 표시하지 않습니다)). 이제는 로컬 디버깅 페이지와 서버 사이에 차이점이 있습니다. 서버는 일부 MasterPage와 함께 다른 마스터 페이지를 사용하지만 Firebug (다음 단락 참조)로 디버깅 한 후에 어떻게 차이가 나는지 확인할 수 없습니다.

Firebug를 사용하여 모든 항목이 올바르게로드되었는지 확인하기 위해 자바 스크립트 코드의 다른 부분을 실행 해 보았습니다. (내 첫 번째 추측은 $ ('# aspnetForm')이 포함 된 섹션이로드되지 않은 것입니다. 차이가있을 수는 있지만) 전혀 개선이 없습니다. 경고는 여전히 링크 나 버튼을 클릭 할 때마다 나타납니다.

내 주요 문제는, 내가 생각하기에, 내가 addToPostBack 함수가하는 일을 완전히 이해하지 못해서 제대로 디버깅 할 수 없다는 것입니다.

무엇이 잘못 되었을지 모르는 사람이 있습니까?

+0

"경고 = 거짓;" 클라이언트가 저장 버튼을 클릭하면? – Naor

+0

많은 합법적 인 버튼이 있기 때문에; 탭에서 탭으로 전환, 컨텐트 추가 등. "warning = false;"추가 이 모든 것들은 내가 피하고 싶은 많은 작업이며, 폼이 편집됨에 따라 유지하는 것이 번거 롭습니다. –

+0

@Erlend D 나는 또한 smae 문제가 있습니다. 어떻게 오류를 수정 했습니까? 도와주세요. – ashishjmeshram

답변

1

추측이지만 일반적인 분쟁 방지 장치가 없으므로 (function ($) {code here}) (jQuery); 그래서 뭔가가 jQuery의 '$'정의와 충돌하여 누군가가 다시 게시 할 때 코드의 예외 실행을 막을 수 있습니다.

0

나는 James에게 동의합니다. 대부분 이러한 유형의 충돌이 발생합니다. noConflict()를 사용하여 제안 할 것입니다. 해피 코딩.