소개
요약 |
|
---|---|
기능 및 특징 |
|
YouTube 동영상 |
|
팝업 생성
프레임 종류 (options.type
) 별 생성
$p.openPopup()
함수를 사용하여 아래와 같이 세 종류(type
)의 팝업을 생성할 수 있습니다.
옵션 | 설명 | 비고 |
---|---|---|
|
|
|
iframePopup |
|
|
browserPopup |
|
|
아래 예제와 같이 type을 wframePopup으로 지정하면 WFrame 팝업을 생성할 수 있습니다.
$r_title(WFrame 팝업 생성 예제) var options = { id : "popup1", type : "wframePopup", popupName : "openPopup1", modal : "true", …… }; $p.openPopup("popup1.xml", options);
YouTube 동영상 (https://youtu.be/Sf3n416Lk4k)
모달 팝업 (options.modal
) 생성
$p.openPopup()
함수를 사용하여 팝업을 생성할 때 options.modal
옵션을 통해 모달 혹은 모달리스 팝업으로 생성할 수 있습니다.
$r_title(모달 팝업 생성 예제) var options = { id: "modal", type: “wframePopup", // "iframePopup", "browserPopup" width: "400px", height: "200px", popupName: "Modal Popup", modal: "true" }; $p.openPopup("popUp_content.xml", options);
YouTube 동영상 (https://youtu.be/vf18BZmGuoQ)
프레임 모달 팝업 (options.frameModal
) 생성
특정 프레임 영역에만 표시되는 팝업을 프레임 모달 팝업이라고 합니다. $p.openPopup()
함수를 통해 팝업 생성 시 options.frameModal
옵션 속성 설정을 통해 팝업을 표시할 프레임을 지정할 수 있습니다.
options.frameModal
"frame"
- 팝업이 호출된 프레임"parent"
- 팝업이 호출된 프레임의 부모 프레임"top"
- 최상단 화면frameId
- 팝업을 표시할 프레임의 ID. ($p.getFrame() 등을 통해 해당 프레임에 직접 접근해서 구함.)
$r_title(사용 예)
var frameId = $p.getFrame().getParentFrame().getParentFrame().id;
var options = {
id: "modal",
type: "wframePopup", // "iframePopup", "browserPopup"
width: "400px",
height: "200px",
top: "100px",
left: "200px",
popupName: "Frame Modal Popup",
modal: "true",
frameModal: frameId // "frame" "parent" "top" framdId
};
$p.openPopup("14_popUp_02A_src.xml", options);
frameModal : "frame"
frameModal : "parent"
frameModal : "top"
framdModal : frameId
YouTube 동영상 (https://youtu.be/R2pEQDkH6Yw)
최상단 팝업으로 생성
여러 팝업을 생성하는 경우, 가장 최상단에 표시할 팝업을 지정하고 해당 팝업을 활성화할 수 있습니다.
속성 | 설명 |
---|---|
modal |
|
useModalStack |
|
alwaysOnTop |
|
$r_title(새로 생성하는 팝업을 제일 위에 표시하고 활성화) var options = { type: "browserPopup", ... modal: true, useModalStack: true, alwaysOnTop: true }; $p.openPopup("popup_parent.xml", options);
부모 WFrame의 Scope를 상속하는 팝업으로 생성
WFrame을 포함하는 화면을 wframePopup
타입의 팝업으로 생성할 경우, 팝업 화면이 포함한 WFrame의 소스(src
) 화면에서 가장 가까운 부모의 WFrame(즉, wframePopup
타입의 팝업)의 객체 및 영역에 접근하도록 허용할 수 있습니다.
$p.openPopup()
함수로 wframePopup
타입의 팝업을 생성할 때 options.scopeInherit
옵션을 아래와 같이 설정하십시오.
"none"
(기본 값) : 부모 영역의 객체를 자동으로 참조하지 않고,$p.main()
함수는 ($p.top()
함수와 동일하게 실행되어) 최상단 페이지에 접근."api"
: 부모 영역의 객체를 자동으로 참조하지 않지만,$p.main()
함수는 부모 영역에 접근."all"
: 부모 영역의 객체를 자동으로 참조하고,$p.main()
함수도 부모 영역에 접근."component"
: 부모 영역의 객체를 자동으로 참조하지만,$p.main()
함수는 ($p.top()
함수와 동일하게 실행되어) 최상단 페이지에 접근.
$r_title(사용 예) var options = { id: "popup1", type: "wframePopup", height: "700px", width: "700px", scopeInherit: "all" }; $p.openPopup("source.xml", options);
scopeInherit="none"
scopeInherit="api"
scopeInherit="all"
scopeInherit="component"
팝업 생성 시 dataObject
를 통한 파라미터 전달
$p.openPopup()
함수로 새로 생성하는 팝업으로 dataObject
를 통해 파라미터를 전달할 수 있습니다. 생성된 팝업에서는 $p.getParameter()
함수를 통해 전달받은 파라미터 확인 가능합니다.
$r_title($p.openPopup() 함수로 팝업을 생성할 때 파라미터 전달 (예시)) requires("uiplugin.popup"); var rowJSON = { "Product Info": { "Origin": "Korea", "Manufacturer": "Inswave", "Type": "Software" }, "Region": "Seoul", "Carrier": true }; var dataObject = { "type": "json", "name": "param", "data": rowJSON }; var options = { id: "popup1", type: "wframePopup", height: "300px", width: "300px", dataObject: dataObject }; $p.openPopup("src.xml", options);
$r_title(팝업창에서 전달받은 파라미터 확인 (예시)) var paramData = $p.getParameter("param"); var data = JSON.stringify(paramData); alert(data);
YouTube 동영상 (https://youtu.be/WF4TOcHZCxI)
팝업 생성 후 서브미션 상태 창 표시
options.processMsgFrame="true"
옵션으로 $p.openPopup()
함수를 실행하여 팝업을 생성할 때, 팝업 페이지 로딩 후에 즉시 $p.executeSubmission()
함수를 실행할 경우 (예: 팝업 페이지의 onpageload
이벤트를 사용), 서브미션 상태창을 팝업 내부 혹은 외부에 표시할 수 있습니다.
"true"
: 서브미션 상태 창이 팝업 외부에 표시됨."false"
(기본 값) : 서브미션 상태 창이 팝업 내부에 표시됨.
$r_title(사용 예) var options = { id: "popup1", type: "wframePopup", .... processMsgFrame: "true" }; $p.openPopup("popup_src.xml", options);
팝업 간 참조
WFrame으로 생성한 팝업은 $p.getPopupWindow() 및 $p.parent() API를 통해 참조할 수 있습니다.
스크립트 위치 | 접근 방법 |
---|---|
main | $p.getPopupWindow("popup1").scwin.test(); |
wframe1 | $p.parent().scwin.test(); |
메인 화면
API | 설명 |
---|---|
$p.openPopup(url, options) | 팝업을 호출. |
$p.getPopupWindow(popupID) | popupID에 해당하는 팝업에 접근. |
$p.getPopup(popupID) | |
$p.closePopup(popupID) | popupID에 해당하는 팝업을 닫음. |
팝업
API | 설명 |
---|---|
$p.getParameter(name) | 파라미터 반환. |
$p.getPopupParam() | 팝업 파라미터 반환. |
$p.isPopup() | 현재 화면이 팝업인지 검사. |
$p.getPopupUrl() | popupURL 반환. |
$p.getPopupId() | popupID 반환. |
$p.getParameter
메인 화면 및 팝업으로 사용할 수 있는 페이지의 경우, 기존의 $p.getPopupParam() 대신 $p.getParameter()로 API를 사용할 것을 권장합니다.
이중 팝업
자식 → 부모
$r_title(사용 예) $p.parent().$p.parent().input1.getValue(); $p.main().input1.getValue();
부모 → 자식
$r_title(사용 예) $p.getPopupWindow("popup1").$p.getPopupWindow("popup11").scwin.test();
형제
$r_title(사용 예) $p.main().$p.getPopupWindow("popup2").$p.getPopupWindow("popup2-1").scwin.test();
팝업 여부
WFrame 팝업
$p.isWFramePopup()
함수를 사용하여 현재 화면 혹은 부모 화면이 WFrame 팝업인지 여부를 확인할 수 있습니다.
팝업에 포함된 WFrame에서 자신 및 부모 화면이 WFrame 팝업인지 여부를 확인
$r_title(사용 예)
// Case (1)
// 현재 화면이 팝업인지 여부를 반환. true/false 반환.
var isWFrame = $p.isWFramePopup();
// Case (2)
// WFrame 팝업 혹은 브라우저 팝업 내에 WFrame이 있는 경우,
// 부모의 WFrame 팝업 여부를 자식 WFrame에서 확인.
var isWFrame = $p.isWFramePopup(true);
YouTube 동영상 (https://youtu.be/8_M6tXdgwgM)
WFrame 팝업 및 브라우저 팝업
$p.isPopup()
함수를 사용하여 현재 화면 혹은 부모 화면의 팝업 여부를 확인할 수 있습니다. (단, 팝업이 wframePopup
혹은 browserPopup
인 경우에 한합니다.)
팝업에 포함된 WFrame에서 자신 및 부모 화면이 팝업인지 여부를 확인
$r_title(사용 예)
// Case (1)
// 현재 화면이 팝업인지 여부를 반환. true/false 반환.
var ispopup = $p.isPopup();
// Case (2)
// WFrame 팝업 혹은 브라우저 팝업 내에 WFrame이 있는 경우,
// 부모의 팝업 여부를 자식 WFrame에서 확인.
var ispopup = $p.isPopup(true);
YouTube 동영상 (https://youtu.be/MbaDvgdtVIQ)
팝업 윈도우
WFrame 팝업
$p.getPopupWindow()
함수를 사용하여, 주어진 ID에 해당하는 type="wframePopup"
팝업 윈도우를 객체로 반환할 수 있습니다.
$r_title(사용 예)
// 팝업 윈도우 반환. Return the popup.
var window = $p.getPopupWindow("popup1");
// 팝업 내의 "text1" 컴포넌트에 접근. Access "text1" component in the popup.
var textValue = window.text1.getValue();
alert(textValue);
YouTube 동영상 (https://youtu.be/HWMIfBt6MOw)
전체 팝업
getAllPopupWindowList()
함수를 사용하면 type="iframePopup"
및 type="browserPopup"
그리고 type="wframePopup"
팝업을 포함한 현재 열려 있는 모든 팝업 객체를 반환하고 해당 팝업 객체에 접근할 수 있습니다.
$r_title(사용 예)
var popWinList = $p.getAllPopupWindowList(true);
for (var i = 0; i < popWinList.length; i++ ) {
console.log(popWinList[i].text1.getValue());
}
예제 파일
인터넷에서 다운로드 혹은
View in the Guide project of WEBSQUARE_DEV_PACK
(/$p/PopUp/getAllPopupWindowList_$p/)
YouTube 동영상 (https://youtu.be/qYy9EjFJVbA)
팝업 목록
WFrame 팝업 목록
현재 열려 있는 WFrame으로 팝업은 $p.getPopupWindowList()
함수를 통해 확인한 후 각 type="wframePopup"
팝업에 접근할 수 있습니다.
$r_title(사용 예)
var popUps = $p.getPopupWindowList();
var eachValue;
var allValues = "";
var i;
for (i = 0; i < popUps.length; i++) {
eachValue = popUps[i].text1.getValue();
allValues += eachValue + " ";
}
alert(allValues);
YouTube 동영상 (https://youtu.be/T6Jz2O14CKo)
전체 팝업 목록
getAllPopupList()
함수를 사용하면 type="iframePopup"
및 type="browserPopup"
그리고 type="wframePopup"
팝업을 포함한 현재 열려 있는 모든 팝업 객체를 반환할 수 있습니다.
YouTube 동영상 (https://youtu.be/DPxCM7q6kNQ)
팝업 닫기
팝업을 닫을 때 실행할 함수 지정
$p.openPopup()
함수를 사용하여 팝업을 생성하고, 해당 팝업을 닫기 (X) 버튼을 클릭하여 닫을 때, 팝업을 닫기 전에 호출할 사용자 정의 함수를 options.closeAction
옵션을 통해 지정할 수 있습니다.
$r_title(팝업 생성 예)
requires("uiplugin.popup");
var options = {
id: "popup1",
type: "wframePopup",
closeAction: "scwin.closeAction"
};
$p.openPopup("popup1.xml", options);
$r_title(options.closeAction 옵션으로 지정한 함수 정의) scwin.closeAction = function(id, info) { if (!info.isCloseButtonClick) { return true; } console.log("scwin.closeAction is about to be run."); return true; }; //info.isCloseButtonClick
: 팝업의 닫기 버튼을 클릭한 경우true
값을 반환.
YouTube 동영상 (https://youtu.be/kq_mC97YZeI)
부모 – 자식 팝업 함께 닫기
WFrame, WindowContainer, TabControl 내에서 이중으로 팝업을 생성할 경우, 모든 자식 팝업을 부모 팝업과 함께 닫을 수 있습니다. 좀 더 자세한 설명은 각 컴포넌트의 해당 항목을 참고하십시오.
부모 팝업만 닫기
$p.openPopup()
함수를 통해 wframePopup
타입의 부모 팝업을 생성할 때 options.popupAutoCloseSkip
옵션을 "true"
로 설정하십시오. 그리고, 부모 팝업에서 wframePopup
혹은 browserPopup
타입의 자식 팝업을 다시 생성하십시오. 이 경우, 부모 팝업의 닫기 버튼을 클릭하여 자식 팝업은 열려 있는 상태로 유지하고 부모 팝업만 닫을 수 있습니다.
$r_title(부모 팝업 생성 예제) var options = { id: "popup1", type: "wframePopup", height: "400px", width: "400px", left: "200px", popupName: "Parent Popup", popupAutoCloseSkip: true }; $p.openPopup("source.xml", options);
부모 팝업만 닫은 경우 (options.popupAutoCloseSkip="true"
)
부모 팝업과 함께 자식 팝업도 닫힌 경우 (options.popupAutoCloseSkip="false"
)
팝업 제어
전체 화면에 팝업 표시
아래와 같이 fullscreen: true옵션을 사용하여 화면 전체에 팝업을 표시할 수 있습니다.
$r_title(사용 예)
$p.openPopup( 'popup.xml', { id:'popup1', fullscreen:true } );
해당 속성은 IE에서만 지원.
크롬, 사파리, 오페라 등은 추후 지원 예정.
YouTube 동영상 (https://youtu.be/ZVnDEldLee0)
팝업창 버튼
$p.openPopup()으로 팝업을 생성할 경우, 아래의 옵션을 사용하여 팝업창의 크기를 조절하는 버튼을 제어할 수 있습니다.
useControl: 버튼의 표시 여부 결정.
controls: 표시할 버튼의 종류를 결정. (최대화, 최소화, 복원)
$r_title(사용 예) $p.openPopup("Popup.xml", { ... useControl: true, controls: { minimize: true, maximize: true, close: true, }, foldOnMinimized: true, foldSize: { width: 100 } });
팝업창 최소화
- 관련 옵션
options.foldOnMinimized: true 최소화 버튼을 누를 경우 바디를 접음
options.foldSize: {width: 300} 접은 바디의 폭
$r_title(사용 예) $p.openPopup("./popup.xml", { ... foldOnMinimized: true, foldSize: { width: 500 } });
팝업 위치 고정
$p.openPopup()
함수를 사용하여 팝업을 생성할 때 options.fixPosition
옵션을 true
로 지정하여 팝업의 위치를 고정할 수 있습니다.
$r_title(사용 예)
var options = {
id: "popup1",
type: "wframePopup",
width: "230px",
height: "250px",
top: "130px",
left: "200px",
popupName: "testPopup",
modal: true,
resizable: true,
fixPosition: true
};
$p.openPopup("sub_popup.xml", options);
YouTube 동영상 (https://youtu.be/v65iVnWntpk)
팝업 크기에 따른 적응형 디자인 적용
$p.openPopup()
함수를 사용하여 팝업을 생성할 때 팝업의 타입(type
)이 WFrame이고 팝업의 소스(src
) 화면이 적응형 디자인을 사용하는 경우, options.adaptiveFrame
옵션을 true
로 지정하면 팝업의 크기에 따라 소스 화면에 적응형 디자인을 적용할 수 있습니다. 즉, 팝업의 크기를 변경할 경우, 팝업의 크기에 따라 팝업에 포함된 화면을 적응형으로 표시할 수 있습니다. 별도로 adaptiveFrame
옵션을 설정하지 않을 경우, 팝업에 포함된 화면은 브라우저 크기에 따라 적응형으로 표시됩니다.
$r_title(사용 예) var options = { id: "popup1", type: "wframePopup", height: "400px", width: "1100px", resizable: true, adaptiveFrame: "true" }; $p.openPopup("adaptive_adaptiveThreshold_TableLayout.xml", options);
YouTube 동영상 (https://youtu.be/crqRrjPWwP8)