트러스트 폼 에서 발생 했으나 자바스크립트 로직상 일반 html 에서도 동일한 증상이 일어 날것으로 예상.
문제 발생 멀쩡 하게 사용 하던 팝업창 에서
자식창 데이터 클릭 -> 부모창에 데이터 전송 과정에서 exception 처리로 인한 오류 발생
기존 opener 호출 함수.
function doFg1DblClick(){
if(!fGridReturn("fg1")) return;
var obj = doc.addGrid("fg1").getRowObj(fg1.row); // 선택된 그리드의 데이터를 OBJECT 로 변환 하는 함수.
try{
opener.javascript.popNrnd(obj); // 부모창의 함수를 호출
}catch(exception){
alert(exceptioni);
}
window.close();
}
alert 창으로 아래와 같은 오류를 출력. 하지만 데이터는 이상없이 부모창으로 insert 처리 됨. ( 메시지내용은 실제론 단순 alert 이 아님으로 아래와 같이 캡쳐됨)
해당과 같은 오류의 상세 내역을 확인 하기 위해 exception 내용을 상세 하게 확인 할수 있는 추가 구현.
기존 alert(exception); ====>을
var output = '';
for (var i in exception) {
output += i + ' : ' + exception[i] + '\n';
}
alert(output);
으로 변경
더 알수가 없게 되었다.. (하지만 해당 구문은 자바스크립트 오류 확인시 많은 도움이 될것 같다.)
해당과 관련 미친듯이 google 을 찾아본 결과 opener 함수 내에서 실행되는 함수 중에 구현 되지 않은 함수가 있는 경우 스크립트 오류가 아닌
object 오류나 syntax 오류로 표기 될수 있다는 글을 확인 했고
자식창및 부모창을 번갈아 가며 다른 파일로 호출 테스트 해 본 결과 자식창이 아닌 부모창에 문제가 있다는 것을 확인
확인해본 결과 함수 호출 과정에서 기존에 사용 하던 js 파일을 제거 하고 해당 기능과 관련된 공통 기능 js 파일을 스크립트 하는 과정에서 실제 사용 한
함수를 누락 하게 되어 발생 한 문제 였다.
부모창 의 함수 (자식창에서 opener 로 호출 하는)
function popNrnd(obj){
fg1.valueMatrix(fg1.row, fg1.colRef("MNS_PROJ_CD_YN")) = "Y";
fg1.valueMatrix(fg1.row, fg1.colRef("RESPERSONNO")) = obj.RESPERSONNO; //부처사업코드
fg1.valueMatrix(fg1.row, fg1.colRef("PRJNAME")) = obj.PRJNAME; //부처과제명
fg1.valueMatrix(fg1.row, fg1.colRef("MNS_PROJ_CD")) = obj.PRJNO; //협약일련번호
fSetFlag("fg1",fg1.row); // <== 문제를 발생 시킨 누락 함수.
model.refresh();
}
위와 같이 지역함수 안에 구현된 function 의 경우 호출 대상이 자신(부모)인 경우에는 function 누락 으로 인한 스크립트 오류가 발생 하지만
자신이 아닌 자식창에서 호출할 경우 제대로 스크립트 오류가 발생 하지 않는 상태로 exception 처리 됨을 확인 할수 있었다.
'트러스트폼' 카테고리의 다른 글
티폼 기능 실사용 정리 (0) | 2012.09.27 |
---|---|
티폼 datagrid 의 일부 컬럼 값이 빈경우 삭제 하기 (0) | 2012.09.26 |
트러스트폼의 화면 구성도 (0) | 2012.07.12 |
트러스트폼 이벤트 (0) | 2012.07.12 |
트러스트폼 버튼 엑션(늘리고 줄이고) (0) | 2012.07.12 |