최근 프로젝트 작업을 할 때 하위 페이지에 제출할 때 자바스크립트 코드를 디버깅할 수 없는 상황이 발생했습니다. 가끔 이 문제로 인해 브라우저에서 하위 페이지의 자바스크립트 코드를 볼 수 없습니다. 일반적으로 원래의 경고나 console.log()를 사용할 수 있습니다. 물론 이것도 해결책이지만 때로는 프로그램이 어떻게 실행되는지 보고 싶을 뿐 아니라 동시에 각 매개변수의 값이 얼마인지, 그 의미가 상당히 크다.
이 문제가 언제 발생하는지 여러분께서 대략적으로 이해하실 수 있도록 사진을 올려드리겠습니다.
<script> (watchDogId) { <br>alert("aa") <br>var url = '<s:url value="/watchDog/stopWatchDog"/>' <br>var params = { <br>watchDogId : watchDogId, <br>}; <br>$.post(url, params, function(data) { <br>if (data.success) { <br>closeDialog(); <br>tbGrid.send(); <br> } else { <br>if (data.errorMsg != null && data.errorMsg != "") { <br>jAlert(data.errorMsg, "시스템 메시지") <br>} else { <br>jAlert("예외 중지", "시스템 메시지"); <br>} <br>$("#saveBtn").removeAttr("disabled") <br>$("#saveBtn").css(" color", "white"); <br>} <br>}, "json"); <br>} <br></script>
이것은 실제로 함수 선언입니다. javascript를 아시는 분이라면 context를 보시면 아시겠지만, 함수 선언은 실제로 페이지 context가 로드될 때 로드되는 함수 이름일 뿐, 해당 함수 내용을 정상적으로 로드할 수 없습니다.
함수 자체 실행으로 전환하거나 함수 자율성에서 이 함수 선언을 정의하면 이 문제를 해결할 수 있습니다.
(function(){
function stopWatchDog(watchDogId ) {
alert("aa");
var url = ''
var params = {
watchDogId : watchDogId ,
};
$.post(url, params, function(data) {
if (data.success) {
closeDialog();
tbGrid.send() ;
} else {
if (data.errorMsg != null && data.errorMsg != "") {
jAlert(data.errorMsg, "시스템 메시지")
} else {
jAlert("예외 중지", "시스템 메시지")
}
$("#saveBtn").removeAttr("disabled")
$("#saveBtn").css( "색상", "흰색");
}
}, "json")
}
})();