팝업

소개

컴포넌트 설명

요약

$p.openPopup() 함수를 사용하여 생성하는 팝업 객체.

기능 및 특징

  • 모달 팝업 지원.

  • 프레임 모달 팝업 지원.

  • 부모 – 자식 관계의 팝업 제어 (함께 열기/닫기, 상호 참조 등) 가능.

  • 팝업을 통한 파라미터 전달.

YouTube 동영상

팝업 생성

프레임 종류 (options.type) 별 생성

$p.openPopup() 함수를 사용하여 아래와 같이 세 종류(type)의 팝업을 생성할 수 있습니다.

팝업 종류 (type)

옵션

설명

비고

wframePopup

  • WFrame 내에 팝업 화면을 호출.

  • Scope 기능 지원.

  • 권장.

iframePopup

  • IFrame 내에 팝업 화면을 호출.

  • 비권장.

    • 외부 도메인과 연동시 사용.

    • 외부 솔루션과 연동 시 사용.

browserPopup

  • 브라우저가 제공하는 native 윈도우에 팝업 화면을 호출.

  • 팝업 호출을 위해 별도의 프로세스를 생성.

  • URL 주소가 노출됨.

  • 비권장.

    • 별도 창이 필요한 경우 사용.

아래 예제와 같이 typewframePopup으로 지정하면 WFrame 팝업을 생성할 수 있습니다.

$r_title(WFrame 팝업 생성 예제)
var options = {
    id : "popup1",
    type : "wframePopup",
    popupName : "openPopup1",
    modal : "true",
    ……
};
$p.openPopup("popup1.xml", options);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_$p/)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup__modal_$p/)

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

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_frameModal_$p/)

YouTube 동영상 (https://youtu.be/R2pEQDkH6Yw)

최상단 팝업으로 생성

여러 팝업을 생성하는 경우, 가장 최상단에 표시할 팝업을 지정하고 해당 팝업을 활성화할 수 있습니다.

관련 속성

속성

설명

modal

  • 모달 기능 사용 여부 지정.

useModalStack

  • 여러 개의 팝업이 출력될 경우, 제일 마지막에 출력되는 팝업만 활성화.

  • modal="true" 설정을 사용할 경우 유효.

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 옵션을 아래와 같이 설정하십시오.

$r_title(사용 예)
var options = {
    id: "popup1",
    type: "wframePopup",
    height: "700px",
    width: "700px",
    scopeInherit: "all"
};
$p.openPopup("source.xml", options);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_scopeInherit_$p/)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/getParameter_$p_openPopup_$p/)

YouTube 동영상 (https://youtu.be/WF4TOcHZCxI)

팝업 생성 후 서브미션 상태 창 표시

options.processMsgFrame="true" 옵션으로 $p.openPopup() 함수를 실행하여 팝업을 생성할 때, 팝업 페이지 로딩 후에 즉시 $p.executeSubmission() 함수를 실행할 경우 (예: 팝업 페이지의 onpageload 이벤트를 사용), 서브미션 상태창을 팝업 내부 혹은 외부에 표시할 수 있습니다.

$r_title(사용 예)
var options = {
    id: "popup1",
    type: "wframePopup",
   ....
    processMsgFrame: "true"
};
$p.openPopup("popup_src.xml", options);

팝업 간 참조

WFrame으로 생성한 팝업은 $p.getPopupWindow()$p.parent() API를 통해 참조할 수 있습니다.

popup1의 scwin.test1(); 실행하기

스크립트 위치

접근 방법

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/isWFramePopUp_$p/)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/isPopUp_$p/)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/getPopupWindow_$p/)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/getPopupWindowList_$p/)

YouTube 동영상 (https://youtu.be/T6Jz2O14CKo)

전체 팝업 목록

getAllPopupList() 함수를 사용하면 type="iframePopup"type="browserPopup" 그리고 type="wframePopup" 팝업을 포함한 현재 열려 있는 모든 팝업 객체를 반환할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/getAllPopupList_$p/)

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 값을 반환.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_closeAction_$p.xml)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_popupAutoCloseSkip_$p/)

부모 팝업만 닫은 경우 (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()으로 팝업을 생성할 경우, 아래의 옵션을 사용하여 팝업창의 크기를 조절하는 버튼을 제어할 수 있습니다.
$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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_fixPosition_$p.xml)

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);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/$p/PopUp/openPopup_adaptiveFrame_$p/)

YouTube 동영상 (https://youtu.be/crqRrjPWwP8)