Contents

eXbuilder 적용

eXbuilder의 환경 및 적용 방법

eXbuilder의 페이지 구성

ContextX.jsp
tmtViewer (Active-X)

Tomato System의 eXbuilder로 작성된 웹애플리케이션은 위와 같이 ContextX.jsp 라는 웹 페이지에 tmtViewer라는 ActiveX Object가 embed된 형태입니다.

ContextX.jsp는 껍데기에 불과하며 모든 액션은 tmtViewer에서 이루어집니다.

넷퍼넬을 적용하지 않은 일반적인 코드

ContextX.jsp
tmtViewer (Active-X)
...

var moPage.onClick_btnSearch = new function(){
	// 1. 인자 확인
	...
	// 2. 서버로 페이지 요청 (load())
	...
	// 3. 받아온 페이지를 이용한 후 작업
	...
}
	
...	

페이지 작성 형태나 서비스 형태에 따라 다르게 구현될 수 있지만, 일반적인 형태는 화면에서 버튼을 눌렀을 때 onClick 이벤트가 발생하며 해당 버튼에 미리 정의해 놓은 Callback 함수가 실행됩니다.

넷퍼넬 코드 적용

ContextX.jsp
<script type="text/javascript" src="netfunnel.js" charset="UTF-8"></script>
<script language="javascript">
	function nf_getTidChkEnter(func,_top,_left){
		if(typeof _top == "number" && typeof _left == "number"){
			NetFunnel_Action({popup_top:_top, popup_left:_left}, func);
		}else{
			NetFunnel_Action({}, func);
		}
	}
	
	function nf_setComplete(){
		NetFunnel_Complete();
	}
	
</script>				
tmtViewer (Active-X)
...

var moPage.onClick_btnSearch = new function(){
	//1. 인자 확인
	...
	model.window().Document.parentWindow.nf_getTidChkEnter(moPage.onClick_btnSearch2);
}

var moPage.onClick_btnSearch2 = new function(){
	// 2. 서버로 페이지 요청 (load())
	...
	
	model.window().Document.parentWindow.nf_setComplete();
	
	// 3. 받아온 페이지를 이용한 후 작업
	...
}	
		
...	

TmtViewer에 존재하는 기존의 함수를 넷퍼넬 호출 이전과 이후로 분리한 후, 웹 서버로 페이지를 요청하는 역할을 하는 함수를 ContextX.jsp의 nf_getTidChkEnter 함수의 Callback 함수로 넘겨줍니다. 웹 서버로부터 모든 페이지 정보를 받아온 이후에는 nf_setComplete 함수를 호출해서 완료 요청을 하세요.

적용시 주의 사항 및 Tip

iframe에 의한 배경 삭제

기본 설정으로 사용하는 경우 ActiveX Object는 반투명을 지원하지 않기 때문에 대기창이 출력될 때 대기창 뒤가 사라져 버리는 현상이 발생합니다. 이런 경우 netfunnel.js의 IFRAME_RESIZE 옵션을 이용하면 화면을 볼 수 있습니다.

디폴트 값인 false를 true로 수정하세요. 하지만 뒷 배경 클릭 차단이 동작하지 않을 수도 있으니 참고하세요.

NetFunnel.TS_IFRAME_RESIZE = true; /**< true | false */	

대기창 출력 위치 변경

뒷 배경이 클릭되는 문제에 대한 대안으로 대기창의 위치를 변경해서 버튼을 클릭하지 못하게 하는 방법이 있습니다. tmtViewer에서 nf_getTidChkEnter 함수를 호출할 때 _top과 _left 값을 숫자로 입력하면 위치를 변경할 수 있습니다.

model.window().Document.parentWindow.nf_getTidChkEnter(moPage.onClick_btnSearch2,200,200);