showModalDialog 대체기능 문의입니다.
- 작성자 :
- 윤*환
- 작성일 :
- 2018-12-03 09:31:02
- 조회수 :
- 3,881
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요. 아래 wiki를 보고 showModalDialog 를 대체하는 함수를 추가하였는데요,
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3:cmm:showmodaldialog
showModalDialog 대체 함수 호출과
getDialogArguments()를 사용한 파라미터 전달까지는 정상적으로 됩니다.
그런데 다이얼로그가 닫힌 후 콜백함수가 호출되지 않습니다.
익스플로러에서는 해당 함수를 타지 않기 때문에 잘 되는데
크롬으로 실행하여 디버깅해보니 콜백함수가 아예 호출되지 않더군요
콜백함수 호출방식이 잘못됐나싶어
아래처럼 콜백함수명을 파라미터로 전달시 "" 문자열이 아닌 함수 자체를 전달해보기도 했는데
window.showModalDialog(url, varParam, openParam, chromePopupCallback);
그래도 안 되더라구요
어떻게 해야할까요?
---------------------------------------- 다이얼로그 호출 jsp ---------------------------------------------
// 다이얼로그 호출함수
function fncWrite() {
...
var retVal = window.showModalDialog(url, varParam, openParam, "chromePopupCallback");
handlePopupRetVal(retVal); // 익스플로러일시 처리(크롬은 retVal 이 undefined)
)
function handlePopupRetVal(retVal) {
if(retVal == "true") {
// 다이얼로그 종료 후 처리되어야 할 부분
}
// 크롬 콜백함수
function chromePopupCallback(retVal) {
handlePopupRetVal(window.returnValue);
}
---------------------------------------- 다이얼로그에 표시될 jsp ---------------------------------------------
function init() {
getDialogArguments();
var id = window.dialogArguments['id'];
...
}
// 처리함수(다이얼로그 종료)
function fncInsert() {
...
document.workForm.action = ...
document.workForm.target = "modal";
document.workForm.submit();
}
---------------------------------------- 다이얼로그 종료시 호출 jsp ---------------------------------------------
window.name="modal";
// 다이얼로그 종료 확인값 리턴
function init() {
if(window.opener) {
window.opener.returnValue = "true";
} else {
window.returnValue = "true";
}
self.close();
}
-------------------------------------------------------------------------------------------------------
일전에 문의드린 '금칙어 포함되지 않았습니다'
오류로 인해 별도의 외부망을 통해 질문드립니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3:cmm:showmodaldialog
showModalDialog 대체 함수 호출과
getDialogArguments()를 사용한 파라미터 전달까지는 정상적으로 됩니다.
그런데 다이얼로그가 닫힌 후 콜백함수가 호출되지 않습니다.
익스플로러에서는 해당 함수를 타지 않기 때문에 잘 되는데
크롬으로 실행하여 디버깅해보니 콜백함수가 아예 호출되지 않더군요
콜백함수 호출방식이 잘못됐나싶어
아래처럼 콜백함수명을 파라미터로 전달시 "" 문자열이 아닌 함수 자체를 전달해보기도 했는데
window.showModalDialog(url, varParam, openParam, chromePopupCallback);
그래도 안 되더라구요
어떻게 해야할까요?
---------------------------------------- 다이얼로그 호출 jsp ---------------------------------------------
// 다이얼로그 호출함수
function fncWrite() {
...
var retVal = window.showModalDialog(url, varParam, openParam, "chromePopupCallback");
handlePopupRetVal(retVal); // 익스플로러일시 처리(크롬은 retVal 이 undefined)
)
function handlePopupRetVal(retVal) {
if(retVal == "true") {
// 다이얼로그 종료 후 처리되어야 할 부분
}
// 크롬 콜백함수
function chromePopupCallback(retVal) {
handlePopupRetVal(window.returnValue);
}
---------------------------------------- 다이얼로그에 표시될 jsp ---------------------------------------------
function init() {
getDialogArguments();
var id = window.dialogArguments['id'];
...
}
// 처리함수(다이얼로그 종료)
function fncInsert() {
...
document.workForm.action = ...
document.workForm.target = "modal";
document.workForm.submit();
}
---------------------------------------- 다이얼로그 종료시 호출 jsp ---------------------------------------------
window.name="modal";
// 다이얼로그 종료 확인값 리턴
function init() {
if(window.opener) {
window.opener.returnValue = "true";
} else {
window.returnValue = "true";
}
self.close();
}
-------------------------------------------------------------------------------------------------------
일전에 문의드린 '금칙어 포함되지 않았습니다'
오류로 인해 별도의 외부망을 통해 질문드립니다.
A
안녕하세요.
표준프레임워크센터 입니다.
크롬에서 window.dialogArguments는 존재하지 않는객체이기 때문에
getDialogArguments();를 수행해서
일종의 주입을 하게 됩니다.
공통컴포넌트에서 샘플에서 Frame으로 한번 감싸져 있을수도 있으니
parent.window.dialogArguments['id']; 으로 호출해 보시기 바랍니다.
공통컴포넌트 샘플 프로젝트에서
1140. 스케줄처리 > 목록화면에서 [등록]버튼 클릭 > 돋보기 버튼 클릭하면
팝업창이 나오는데 이부분을 참고하셔도 됩니다.
감사합니다.
표준프레임워크센터 입니다.
크롬에서 window.dialogArguments는 존재하지 않는객체이기 때문에
getDialogArguments();를 수행해서
일종의 주입을 하게 됩니다.
공통컴포넌트에서 샘플에서 Frame으로 한번 감싸져 있을수도 있으니
parent.window.dialogArguments['id']; 으로 호출해 보시기 바랍니다.
공통컴포넌트 샘플 프로젝트에서
1140. 스케줄처리 > 목록화면에서 [등록]버튼 클릭 > 돋보기 버튼 클릭하면
팝업창이 나오는데 이부분을 참고하셔도 됩니다.
감사합니다.