쇼모달(영문) 사용 문의
- 작성자 :
- 정*석
- 작성일 :
- 2014-10-30 13:48:57
- 조회수 :
- 2,474
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요 이번에 크롬에서 showModalDialog사용가능하게 공통콤포넌트에서 아래의 js파일만 복사해서 사용하는데요
부모창 : showModalDialog.js
자식창 : showModalDialogCallee.js
메뉴얼 : http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3:cmm:showmodaldialog
이렇게 메뉴얼대로 적용하고 테스트 하는 중입니다
- 테스트 1
url = /eGovFrame/test <- 파일명
부모창에서 바로 자식 (jsp) 경로로 showModalDialog 띄운 경우
자식창에서 callback 함수도 잘불러오고 잘됨
- 테스트 2
url = /eGovFrame/test.do <- 자바 경로
부모창에서 showModalDialog을 이용해 url을 자식.do로 java 거친 후 자식창으로 이동 한경우
dialogArguments["변수명"]; 잘 됩니다
setReturnValue(변수명); 여기서 오류가 납니다
"팝업 처리 시 오류가 발생하였습니다. 오류내용:TypeError. undefinedisnot a function"
이라고 나옵니다
그래서 showModalDialogCallee.js 파일에서 function setReturnValue() 함수 최상단에 alert("a"); 찍어보았지만 나오진 않습니다.catch(err) 부분 alert 메시지도 변경해 보았지만 변경한 메시지가 아닌 위의 오류 메시지로 나옵니다 어디서 오류가 나는지 모르겠네요
혹시 부모창에서 showModalDialog을 여러개 사용중이지만
각 펑션 마지막 부분마다 콜백명을 명시해놨습니다만 여기서 잘못된건지.. 콜백 하나로 써도 마찬가지구요..
function test1(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback1");
}
function test2(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback2");
}
function test1(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback3");
}
이렇게 각 펑션마다 showModalDialog 마지막에 "testPopupCallback1" 콜백명 다르게 사용중입니다
=== 추가 ==
showModalDialogCallee.js 파일에서
function setReturnValue(obj) 여기 부분에
if (opener != null && !opener.closed) {
var callbackMethod = opener.getCallbackMethodName();
try {
if (callbackMethod != null) {
opener[callbackMethod](obj);
} else {
opener.showModalDialogCallback(obj);
}
} catch (err) {
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
}
여기서 opener[callbackMethod](obj); 이부분에서 undefined 오류가 납니다
callbackMethod 변수에는 콜백 함수가 들어가있습니다
부모창 콜백함수가 function test(){}라고 한다면 팝업창에서 alert(open.test); 하면
콜백 펑션 내용이 나옵니다 opener[callbackMethod](obj); 이걸 수정해야 되는건가요?
어떻게 해야되는지 알려주세요
부모창 : showModalDialog.js
자식창 : showModalDialogCallee.js
메뉴얼 : http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3:cmm:showmodaldialog
이렇게 메뉴얼대로 적용하고 테스트 하는 중입니다
- 테스트 1
url = /eGovFrame/test <- 파일명
부모창에서 바로 자식 (jsp) 경로로 showModalDialog 띄운 경우
자식창에서 callback 함수도 잘불러오고 잘됨
- 테스트 2
url = /eGovFrame/test.do <- 자바 경로
부모창에서 showModalDialog을 이용해 url을 자식.do로 java 거친 후 자식창으로 이동 한경우
dialogArguments["변수명"]; 잘 됩니다
setReturnValue(변수명); 여기서 오류가 납니다
"팝업 처리 시 오류가 발생하였습니다. 오류내용:TypeError. undefinedisnot a function"
이라고 나옵니다
그래서 showModalDialogCallee.js 파일에서 function setReturnValue() 함수 최상단에 alert("a"); 찍어보았지만 나오진 않습니다.catch(err) 부분 alert 메시지도 변경해 보았지만 변경한 메시지가 아닌 위의 오류 메시지로 나옵니다 어디서 오류가 나는지 모르겠네요
혹시 부모창에서 showModalDialog을 여러개 사용중이지만
각 펑션 마지막 부분마다 콜백명을 명시해놨습니다만 여기서 잘못된건지.. 콜백 하나로 써도 마찬가지구요..
function test1(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback1");
}
function test2(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback2");
}
function test1(){
생략...
var reValue = window.showModalDialog(url, args,"dialogHeight:300px; dialogWidth:450px;", "testPopupCallback3");
}
이렇게 각 펑션마다 showModalDialog 마지막에 "testPopupCallback1" 콜백명 다르게 사용중입니다
=== 추가 ==
showModalDialogCallee.js 파일에서
function setReturnValue(obj) 여기 부분에
if (opener != null && !opener.closed) {
var callbackMethod = opener.getCallbackMethodName();
try {
if (callbackMethod != null) {
opener[callbackMethod](obj);
} else {
opener.showModalDialogCallback(obj);
}
} catch (err) {
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
}
여기서 opener[callbackMethod](obj); 이부분에서 undefined 오류가 납니다
callbackMethod 변수에는 콜백 함수가 들어가있습니다
부모창 콜백함수가 function test(){}라고 한다면 팝업창에서 alert(open.test); 하면
콜백 펑션 내용이 나옵니다 opener[callbackMethod](obj); 이걸 수정해야 되는건가요?
어떻게 해야되는지 알려주세요
A
안녕하세요. 정민석님.
정민석님의 상황은 다음과 같은 경우인 것 같습니다. (보안정보시스템 상 메소드 중간에 _ 포함)
show_Modal_Dialog를 호출하시고 나서
location.href 또는 form의 submit이 호출되신 경우입니다.
이 경우 기존 show_Modal_Dialog는 호출된 dialog 상에서 처리가 완료되어야 이후 처리가 되기 때문에 문제가 없지만,
새롭게 변경된 window.open 방식은 팝업 호출 후 바로 처리되기 때문에 하단 페이지가 다른 페이지로 변경됩니다.
이 경우 show_Modal_Dialog.js에서 제공하는 showModalDialogSupported 변수를 통해 다음과 같이 변경하시면 되실 것 같습니다.
* 기존
if (retVal == "join") {
} else {
location.href="http://www.egovframe.go.kr/uat/uia/egovLoginUsr.do";
}
}
* 변경
if (showModalDialogSupported) {
if (retVal == "join") {
} else {
location.href="http://www.egovframe.go.kr/uat/uia/egovLoginUsr.do";
}
}
그리고 실제 페이지 전환 부분은 callBack 메소드에서 처리하시면 됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.
정민석님의 상황은 다음과 같은 경우인 것 같습니다. (보안정보시스템 상 메소드 중간에 _ 포함)
show_Modal_Dialog를 호출하시고 나서
location.href 또는 form의 submit이 호출되신 경우입니다.
이 경우 기존 show_Modal_Dialog는 호출된 dialog 상에서 처리가 완료되어야 이후 처리가 되기 때문에 문제가 없지만,
새롭게 변경된 window.open 방식은 팝업 호출 후 바로 처리되기 때문에 하단 페이지가 다른 페이지로 변경됩니다.
이 경우 show_Modal_Dialog.js에서 제공하는 showModalDialogSupported 변수를 통해 다음과 같이 변경하시면 되실 것 같습니다.
* 기존
if (retVal == "join") {
} else {
location.href="http://www.egovframe.go.kr/uat/uia/egovLoginUsr.do";
}
}
* 변경
if (showModalDialogSupported) {
if (retVal == "join") {
} else {
location.href="http://www.egovframe.go.kr/uat/uia/egovLoginUsr.do";
}
}
그리고 실제 페이지 전환 부분은 callBack 메소드에서 처리하시면 됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.