외부모듈 연동

Embed시 실행환경 참고사항

MiPlatform 및 XPLATFORM, nexacro제품은 ActiveX모듈을 제공하여 
브라우저에 Embed형태로 추가하여 마치 웹브라우저에서 동작하는 것처럼 사용이 가능합니다. 
이때 반드시 알아야 할 사항을 정리합니다.

Embed 가능조건

IE브라우저가능 가능하며, 또한 32bit IE버전으로 실행해야만 가능며, 64bit IE에서는 동작하지 않음

즉 (ActiveX가 32bit모듈임)

기타 64bit IE, 크롬, 사파리 등 32bit용 IE를 제외하고는 사용이 불가능함 (각 브라우저에서 ActiveX를 지원하지 않음)

MSIE(웹브라우저) 컴포넌트 관련 이슈모음

namedItem 접근오류(인수를 선택할 수 없습니다.)

원인

MSIE0.Document.forms.namedItem("webform");

ie_error

문제가 되는 내용은 IE브라우저 컴포넌트에서 제공하던 namedItem이 IE8이상 부터는 지원을 하지 
않아 발생하는 문제입니다. 

따라서 아래와 같이 content를 IE9이상 사용을 하게 되면 오류가 발생합니다. 
예)
<meta http-equiv="X-UA-Compatible" content="IE=8">

관련내용은 아래 URL의 Remarks 정보를 참고하세요.

https://msdn.microsoft.com/ko-kr/library/dd347040(v=vs.85).aspx

브라우져 모드를 변경방법

MiPlatform, XPLATFORM, nexacro에서 webbrowser, msie 컴포넌트 사용시 기본적으로
IE7로 동작이 됩니다. 
이 경우 연동하는 HTML소스에 따라 속도에 영향이 발생할 수 있는데 이때 브라우저 모드를 
변경하여 브라우저 버전을 올릴 수 있으니 참고하세요

TIP게시판 1,827번 참고하세요.

webbrowser컴포넌트에서 jsp호출하여 activex(fax viewer)를 사용시 툴바안보이는 문제

원인

해당 ActiveX(Fax Viewer)는 IE에서 확인결과 9버전이상부터 정상작동하는 것을 확인 함

해결방안

HTML의 MetaTag를 이용하여 IE9이상으로 설정하거나
IE 브라우저 Load되는 부분을 ExtCommonAPI를 이용하여 사용자 PC의 브라우저 정보를 
변경해 주는 방법사용

IE Embed형태에서 해상도를 변경시 잔상이 남는 문제

IE Embed 형태로 구현된 Application에서 해당도를 키우는 경우 화면 잔상이 남는 경우 체크사항입니다.

체크사항

IE Embed형태로 사용하여 화면을 키우게 되면 IE브라우저의 스크롤과
Embed하는 Activex의 스크롤이 존재합니다, 이때 IE브라우저의 스크롤이 움직여 잔상이 생길 수 있으니 
스크롤 영역을 체크해 볼 필요가 있습니다.

참구사항

-먼저 제품(mp,xp,np)에서 발생하는 잔상인가 파악이 중요하다 생각됨.

-스크롤시 나타나는 잔상이라면 어디영역의 스크롤인지 선파악필요.

->div영역의 스크롤로 생각했지만 실제로 HTML로 생성된 폼영역의 스크롤 이었음.

전용브라우저 환경에서 타 솔루션과 데이타 송/수신 방법

제품을 연동하다 보면 타 솔루션(Application)과의 데이타 통신이 필요한 경우 있는데 
이때 사용할 수 있는 방법으로 Window Message(WM_COPYDATA) 기능을 이용할 수 있습니다.

제약사항

1. 위치 변경 등을 할때 UI의 부자연 스러움
2. 데이터 전달 유형의 제약 : pointer 전달 안 됨.
3. win7 이상 같은 경우는 관리자권한으로 실행햐야함.
   또는 사용자계정컨트롤이 사용안함으로 설정.

현재 타 솔루션과 통신을 위해서는 해당 방법이 유일하지만 다음과 같은 제약사항이

발생하므로 반드시 체크 하시기 바랍니다.

해당 기능은 MiPlatform을 제외한 XPLATFORM, nexacro platform14에서는 ExtCommonAPI와 같이 별도 DLL이 있어야 사용이 가능합니다.


타 솔루션에서도 이와 같은 서비스가 제공이 되어야 상호간 데이타 송/수신이 가능합니다.

Citrix환경

Citrix 가상머신과 PID 툴을 충돌

현상

Citrix 가상머신과 PID 툴을 동시에 띄울 경우 PID가 Start.xml을 제대로 로딩하지 못하는 이슈가 발생하는듯 합니다.

원인 및 해결

참고 사이트

http://www.teruten.co.kr/main

화면보안 프로그램에서 문제발생하여 해결 솔루션에서 해결함

Citrix VDI환경에서 속도 느린 현상

현상

Ctrix 가상화(VDI) 환경에서 ISIS(서울보증보험 프로젝트) 실행 시 화면 로딩 속도 이슈
( 일반 PC 환경에서 업무화면 로딩 시 3~7초 정도, 이지만 VDI 환경에서 16~20 걸림. )

환경분석

Ctrix Desktop 환경
ISIS Project 개발계 : portal-d.sgic.co.kr 
VDI 계정 ( ID: 204116, 2040330 ) 으로 VDI PC 4대로 현상 분석.

조치내용

VDI 업체 에서 하드웨어 설정 변경 했다고 합니다
디스플레이 출력쪽 설정인 throughput 설정을 늘려서 화면 로딩시간이 12초에서 6초로 줄었다고 합니다.

참고사항

고객사에서는 투비소프트 제품 문제라고 하여 기술지원을 3일이상 방문하여
계선사항을 찾았으나, 제품측면에서 대응한 내용은 없음 
즉 Citrix의 환경설정에 문제로 파악됨

고객사 : SGI 서울보증 보혐 Ctrix VDI 환경에서 발생한 케이스

VDI환경접속 메뉴가 좌/우로 변경되어 표현되는 문제

현상

메뉴표현시 오른쪽 표현이 가능함에도 
불구하고 리스트가 오른쪽이 아닌 왼쪽으로 펼쳐짐

track_menu

VDI환경(현상발생)   ver 2011.10.6.1 / 3.2.0.550 (20120228_1124_Windows_Win32A_320) IE11
개발   (현상발생X)  ver 2012.6.4.1  / 3.2.0.610 (20120625_1141_Windows_Win32A_320) IE8 
window 7 Professional K 32 bit
런타임 전용브라우저 이므로 IE8, IE11 제약을 받지 않을 것으로 판단.(임베디드X)
기본적인 현상확인(케이스 파악) 및 환경관련 캐치.

원인

문제가 되는 PC의 레지스트리 정보가 변경된 경우 발생

해결방안

[ 레지스트리 정보 참고]
Computer ->HKEY_CURRENT_USER->Software->
Microsoft -> Windows NT -> Windows ->우측내용확인
Name 이 MenuDropAlignment 인 로우의 Data컬럼 값을 0으로 변경해줘야함.
(현상이 발생된PC의경우 값은 1)

참고사항

MiPlatform의 경우 MFC(Microsft Foundation Calss)기반으로 만들어져 있기 때문에 해당 속성의 영향을 받으며, 타 제품이 경우에도 해당 정보를 참조하는 경우라면 영향을 받을 수 있습니다.


해당 속성은 검색엔진(웹브라우저 검색) 등을 통해서도 Window환경에 영향도가 있음을 확인 할 수 있습니다.


즉 Window의 전체 메뉴 표현에 영향도가 발생합니다.

여러 프로젝트를 하나의 엔진모듈에 사용하고자 한다면 가장 먼저 버전통합을 고려해야 합니다.

DEXT5Upload 서비스를 HTTPS 파일업로드 시 Nexacro Platform 에서 404 오류 발생

주요내용

1) 운영서버 공인인증서 적용 확인
2) 담당자 로컬환경 사설 인증서 환경에서 테스트.
> Nexacro 엔진 소스코드를 수정하여 사설 인증서 점검 부분을 수정하여 테스트 환경 구축
> 서버 exception 로그로 “Block must include CRLF” 오류 확인 
(데브피아 담당자가 해당 오류에 대해 CRLF 데이터 형식이 누락되어 발생한다는 것을 답변함) 
> 김경래 수석, 윤성혁 수석 이 nexacro 엔진 소스 확인 결과 multipart 데이터 형식에 맞춰 CRLF 내용을 전달하고 있음을 확인
> 본사에서 점검하여 mulitpart 데이터 형식에 맞춰 전송됨을 확인 시 데브피아의 지원이 필요필요할 것 판단됨.

참고사항

해당 내용은 투비소프트, DextUpload업체와 만나 관련 사항에 대한 기술미팅이 추가적으로

필요하나 DextUpload사에서는 오프라인 지원은 안한다고 하여 보류함

테스트 중 FileUpload 시 404 에러를 서버에서 리턴하면 간헐적으로 nexacro Platform이 비정상 종료하는 케이스가 있는 것으로 의심됨. (연구소도 인지하고 내부 테스트한다고함.)

nexacro platform의 webbrowser의 결과페이지 초기화 방법

참고사항

this.web.set_url("");   (X)
this.web.set_url("about:blank"); (O)

기타 (TechnicalNote) 참고

MSIE(웹브라우저)

마이플랫폼에서 MSIE 컴포넌트를 이용하여 웹 페이지를 띄울 수 있습니다.

MSIE 컴포넌트 추가방법

MSIE를 이용하기 위해서는 MSIE컴포넌트를 추가하여 이용하여야 합니다

20120629_111626587_msie_1

20120629_111650405_msie_2

20120629_111724402_msie_3

function form_OnLoadCompleted(obj)
{
    var strUrl = "http://www.naver.com";  
    MSIE0.Navigate(strUrl); 
    //MSIE0.Navigate("www.naver.com", "", "_blank"); 
    //세번째 파라메터를 _blank 로 하시면 새창으로 뜹니다.
}

20120629_111755420_msie_4

MSIE 이용하여 html페이지로 값 넘기는 방법

//마이플랫폼 소스
function Button0_OnClick(obj)
{
      var URL = "http://172.10.11.171:8080/tobehye/controll/postdata_test.jsp";
      var Headers = "Content-Type: application/x-www-form-urlencoded";
      var PostData = TextToBin("UserID=한글한글&DataID=TOBE1234&PrcKey=7777");
      MSIE0.Navigate(URL, "", "_self",PostData,Headers); 
}
소스 : postdata_test.jsp
 
<%@ page contentType="text/html;charset=EUC-KR" %>
<%@ page language="java"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.sql.*" %>
<html>
<head>
</head>
<body>
<%
String UserID = new String( request.getParameter("UserID").getBytes("8859_1"),"EUC-KR");  //한글처리방법
out.println("UserID ==>"+UserID); 
String DataID = request.getParameter("DataID"); 
out.println("DataID ==>"+DataID); 
String PrcKey = request.getParameter("PrcKey"); 
out.println("PrcKey ==>"+PrcKey); 
%>
</body>
</html>

20120629_111837821_msie_5

MSIE 이용하여 html페이지의 함수 호출 및 html 값 전달

//마이플랫폼 소스
 
function form_OnLoadCompleted(obj)
{
    var strUrl = "http://localhost:8080/tobehye/controll/test01.html";  
    //jsp경로 지정해줍니다.
    MSIE0.Navigate(strUrl); 
}
function Button1_OnClick(obj) //  xml 페이지에서  msie에 연결된 html 페이지로 값 전달
{  
   var webForm = MSIE0.Document.forms.namedItem("webform"); // Form을 찾음.
   webForm.elements.namedItem("FxmlURL").value = '값전달';
}
function Button2_OnClick(obj) //xml페이지에서 msie에 연결된 html페이지의 함수 호출
{
      var objDocument = MSIE0.Document;
      var objHtmlElementCollection = objDocument.All();
      var Item0;
      Item0 = objHtmlElementCollection.item("btnok");
      Item0.Click();
}
//HTML 소스
<html>
<script language="javascript">
function aaa()
{
       alert("호출완료");
}
</script>
</head>
<form name="webform">
 <input type="hidden" id="btnok" value="" name='ok' onClick="javascript:aaa();"/>  
<TABLE cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
<TR>
       <TD>
             <input type="text" value="" size="60" name="FxmlURL"/>
       </TD>
</TR>
</TABLE>
</form>
</html>

MSIE 이용하여 html페이지에서 마이플랫폼으로 값 전달

MSIE를 이용하여 연결된 html 페이지에서 마이플랫폼으로 값을 전달할 수 있습니다.
사용예) MISE의 TitleChange 이벤트를 이용하여 마이플랫폼에서 값을 받을 수 있습니다.
var chk;
function MSIE0_TitleChange(obj,Text)
{
    if( chk != Text ) { 
        trace(">>>>>>" + Text);   //test12345
        chk = Text; 
    }
}
<script language="javascript">
function bbb()
{
       document.title = "test12345";
}
</script>
html페이지에서 넘길값이 여러개일 경우 구분자를 두어 붙여서 넘기시고 마이플랫폼에서 구분자를 기준으로 잘라 사용하시면 되겠습니다.

MSIE 컴포넌트 추가하는방법

MSIE컴포넌트 이용하여 마이플랫폼에서 jsp페이지의 함수 호출방법

MSIE컴포넌트 이용하여 마이플랫폼에서 jsp페이지로 값 전달방법

MSIE컴포넌트 이용하여 jsp페이지에서 마이플랫폼으로 값 전달방법

MSIE(웹브라우저) 사용시 TitleChange 이벤트의 Text에 대한 길이제한

MSIE를 통해서 얻을 수 있는 Title의 길이는 최대 259까지 Text값으로 들어옵니다.
실제 일반 웹브라우저의 경우에는 96자리까지 표현이  되지만  마이플랫폼에서 
MSIE를 통해 페이지를 호출하고 호출된 페이지에서 Title이 변경되는 순간 MSIE의 
TitleChange에 Text값이 들어오는데 이때는 259까지 받을 수 있습니다.
//사용 예)
function AxMsie0_TitleChange(obj,Text)
{
    trace(text + "==" + length(Text));
}

MSIE의 TitleChange이벤트에 값 전달시 길이제한이 있나요?

MSIE(브라우저) 컴포넌트를 이용하여 웹 페이지 표현시 border 없애는 방법

MSIE를 이용하여 웹브라우저를 호출하는 경우 디폴트 화면이 아래와 같이 표현이 됩니다.

20120430_153445073_pid_6

위의 border를 없애는 방법은 MiPlatfom이 호출하는 페이지 즉 html소스에 다음과 같은 옵션이 들어가야 합니다. 
 
1안) <body style="border:0"    ...
2안) <html style="border:0" >
둘 중 한 가지 방법을 선택하시면 됩니다.

MSIE(웹브라우저컴포넌트) 사용시 Border를 없애는 방법?

MSIE를 이용한 사진 표현 샘플

첨부한 샘플에 대한 소스 설명

function html_Viewer_OnLoadCompleted(obj)
{
   //폼의 onLoadComplated에서 blank페이지를 생성합니다. 
   AxMsie0.Navigate2("about:blank", ,"_self", "", "");  
}
// MSIE의 DocumentComplate이벤트에서 브라우저 표현에 대한 옵션을 설정할 수 있습니다. 
function AxMsie0_DocumentComplete(obj,pDisp,URL)
{
   AxMsie0.Document.body.Scroll = "no";    
   AxMsie0.Document.body.leftmargin = "0"; 
   AxMsie0.Document.body.topmargin = "0";   
}
function Button0_OnClick(obj)
{
   // MSIE 의 innerHTML기능을 이용하여 이미지를 표현합니다. 
   AxMsie0.Document.body.innerHTML = "<img src='http://www.miplatform.co.kr/Miplatform/NewHome/images/main/main_image_help.gif' width='100'>";   
   //height를 설정하지 않은 이유는 width만 설정하면 height는 자동 비율에 의해 사이즈가 표현이 가능합니다. 
}
//전체소스
 
<?xml version="1.0" encoding="utf-8"?>
<Window>
<Form Height="543" Id="html_Viewer" Left="8" OnLoadCompleted="html_Viewer_OnLoadCompleted" PidAttrib="7" Title="html_Viewer" Top="8" Ver="1.0" Width="800" WorkArea="true">
   <Datasets>
      <Dataset Auto="false" DataSetType="Dataset" Id="dsMain">
         <Contents>
              <colinfo id="name" size="256" summ="default" type="STRING"/>
              <colinfo id="content" size="256" summ="default" type="STRING"/>
              <record>
                           <content>http://blogthumb2.naver.net/data44/2008/12/28/67/a4b7_sinimint_my_ej.jpg?type=r2</content>
                            <name>네이버 검색이미지1</name>
              </record>
              <record>
                           <content>http://blogthumb2.naver.net/data44/2008/12/14/19/17_llllllean.jpg?type=r2</content>
                            <name>네이버 검색이미지2</name>
              </record>
              <record>
                           <content>http://cafethumb2.naver.net/data38/2008/12/19/275/%BB%E7%C1%F8_347_apdlemqhdl.jpg?type=r2</content>
                            <name>네이버 검색이미지3</name>
              </record>
         </Contents>
      </Dataset>
   </Datasets>
   <AxMsie Bottom="176" DocumentComplete="AxMsie0_DocumentComplete" FullScreen="true" Height="120" Id="AxMsie0" Left="24" Right="128" Silent="true" Top="56" Width="104"></AxMsie>
   <Image FillType="STRETCH" Height="45" Id="Image0" Left="510" TabOrder="2" Top="35" Width="93"></Image>
   <Button Height="42" Id="Button0" Left="144" OnClick="Button0_OnClick" TabOrder="3" Text="innerHTML" Top="48" Width="115"></Button>
</Form>
<Script><![CDATA[
function html_Viewer_OnLoadCompleted(obj)
{
  AxMsie0.Navigate2("about:blank", ,"_self", "", "");  
}
function AxMsie0_DocumentComplete(obj,pDisp,URL)
{
  AxMsie0.Document.body.Scroll = "no";    
  AxMsie0.Document.body.leftmargin = "0"; 
  AxMsie0.Document.body.topmargin = "0";     
}
function Button0_OnClick(obj)
{
  AxMsie0.Document.body.innerHTML = "<img src='http://www.miplatform.co.kr/Miplatform/NewHome/images/main/main_image_help.gif' width='100'>";
}   
]]></Script>
</Window>

참고사항

사용 예)
//HTML
AxMsie0.Document.body.innerHTML = "<html><title>test</title><body>테스트</body></html>";
//무비파일
AxMsie0.Document.body.innerHTML = ‘<embed src="http://xxxx.동영상.wmv" width="100%" height="100%"></embed><PARAM NAME="AutoStart" VALUE="true">’;

사진보여주는 기능

Window7 동영상 재생문의

MSIE를 통해 호출 시 데이터 전달(POST)방법

var URL = "http://172.10.2.46:8080/miplatform/msiepost.jsp";
var PostData = TextToBin("ID=userID1111&PWD=password");  
//TextToBin을 해 주어야 Post로 정상적으로 전달됨
var Headers = "Content-Type: application/x-www-form-urlencoded";
AxMsie0.Navigate(URL, "", "", PostData, Headers);

참고사항

Get방식으로 호출하고자 한다면 URL뒤에 ?를 통해 값 전달이 가능합니다.
var URL = http://172.10.2.46:8080/miplatform/msiepost.jsp?Parameter=test ;

MSIE를 통해 호출시 POST 데이터 전달방법

MSIE에서 사용할 수 있는 함수 및 간략설명

* 아래 사이트를 참조하세요..
* http://msdn.microsoft.com/en-us/library/aa752043(VS.85).aspx

MSIE(웹브라우저)

MSIE에 페이지 호출시 스크롤 제어방법입니다.

사용 예)
function ActiveX00_DocumentComplete(obj:ActiveX, e)
{
    var objDom = obj.Document.body;
    objDom.scroll = 'no'; //msie의 속성을 지정하는 scrollbar 
}

MSIE의 스크롤을 없앨 수 있나요?

MSIE에 값 셋팅 방법

스크립트에서 HTML 내용을 만들어 웹페이지로 MSIE에 보여주는 방법 입니다.
사용 예)
function Form_onload(obj:Form, e:LoadEventInfo)
{
    ActiveX00.Navigate2("about:blank");
}
function ActiveX00_DocumentComplete(obj:ActiveX, e)
{
    ActiveX00.Document.body.innerHTML=  "<html><body>출력하고자 하는 내용 기술</body></html>";
}

MSIE에 HTML문자열을 적용할 수 있나요?

internet Explorer 폼 밖으로 띄울 때 주소 창 없이 띄우는 방법

ie창을 띄우는 경우 주소 창 및 메뉴 등을 없애고 띄우는 방법입니다.

설정방법

20120615_185055507_activex

아래 소스와 같이 옵션에 0을 설정하면 ie창에서 보이지 않습니다.

MSIE0.Navigate("about:blank"); 
MSIE0.Navigate("javascript:window.open('http://daum.net','popup','width=1024px,height=768px,top=0,left=0,menubar=0,toolbar=0,location=0,directories=0,status=01,status=no,scrollbars=no')");

웹 브라우저 띄울 때 주소 창 생략하는 방법

XPlatform에서 주소 창 없이 웹 페이지의 팝업 띄우는 방법

MSIE에 호출된 화면의 항목 제어방법

MSIE(shell.explorer)에 웹페이지를 호출 하였을 경우 웹페이지의 항목을 제어하고자 하는 경우 제어 방법입니다.

사용방법

MiPlatform
var objDocument = AxMSIE.Document;
var objHtmlElementCollection = objDocument.All();
var Item0;
Item0 = objHtmlElementCollection.item("pasteBtn");
Item0.value = ds_CONT.GetColumn(0,"CONT");
Item0.Click();
XPLATFORM
var objDocument = msIE.Document;  
var objHtmlElementCollection = objDocument.getElementById("pasteBtn");  
objHtmlElementCollection.value = ds_CONT.GetColumn(0,"CONT"); 
objHtmlElementCollection.Click();

MSIE을 이용한 POST 전송 방법

MSIE에서 데이터 전송시 get방식이 아닌 post 전송 방법입니다.
소스 예)
 
var JSESSIONID = "123456789";
var Headers = "Content-Type: application/x-www-form-urlencoded\r\n";
var objBuffer = new Buffer("JSESSIONID=" + JSESSIONID+"&arg1=tobesoft");
//"_new" 등으로 IE 브라우져로 띄우면 유지안됨
ActiveX00.Navigate2("http://localhost:8078/keris/JTest.jsp", "", "_self", objBuffer.data, Headers);

주의사항

"_new" 등으로 IE 브라우져로 띄우면 유지안됨

Msie post로 데이터값 넘기는 방법

MSIE 스크립트 실행방법

MS InternetExplorer 11버전 이상에서 함수 호출방법이 변경에 따른 실행방법입니다.
ExtCommonApi를 이용하여 InternetExplorer 버전체크 및 실행방법은 아래 소스를 참고하세요.
var objExt = new ExtCommon();
IE_Gbn = objExt.regGetValue("HKEY_LOCAL_MACHINE", "SOFTWARE\\Microsoft\\Internet Explorer\\", "Version", "S");
IE_Gbn = IE_Gbn.substr(0,1); 

//설치된 IE 버전별로 분기처리 함. IE버전이 9보다 작을 경우
//IE버전이 9 이상일 경우 
if( IE_Gbn < 9 ) 
    objDoc.parentWindow.execScript("callXp('" + encodeURI( v_inVal ) + "')", "JavaScript");
else
    objDoc.parentWindow.callXp(encodeURI( v_inVal ));

execScript가 IE11이상에서 적용안됨

직접 함수호출을 할 수 있으나 IE9이전 버전에서는 execScript만 사용이 가능하여

버전별 체크를 통해 소스구현

nProtect 오작동으로 관련 기술미팅 요청

분석내용

로그인 화면 또는 메인화면에서 간헐적으로 화면이 안나옴 (현상재현 안됨)

참고사항

nProect 개인방화벽 기동 시 브라우저에서 2초를 텀으로 헬스체크하는 로직이 있어 업체에서 관련 내용 확인 중

LastInput모듈

모듈설명

LastInput에서의 이벤트 방식은 Windows OS에서 기본 제공하는 API GetLastInputInfo 함수를 통하여 마지막 인풋 장치의 입력을 체크하는 함수를 호출하여 이벤트를 제어하는 방식입니다.

참고사항

간혹 Application단위로 체크를 원하는 고객사가 있으니 이는 구현에 어려움이 있고 
메시지를 후킹이 필요한 부분으로 보안상에 취약점을 가질 수 있습니다. 
또한 보안프로그램과 충돌 혹은 알 수 없는 ㅁ누제가 발생할 수 있어 OS단 체크방식 이외에는
기능추가 계획이 없습니다.

즉 Application 단위가 아닌 Windows OS단위를 체크합니다.

간헐적으로 IE 브라우저 또는 XPlatform 화면이 검게 변하거나 화면이 표시 안됨

원인

이미지세이퍼 충돌 현상 (5.17.601)
이미지세이퍼 버전 다운그레이드 (유지보수 업체 설치파일 실행)

해결방안

이미지세이퍼 다운그레이드

이미지세이퍼 5.17.601 버전에서 XPlatform 또는 IE 브라우저 화면이 검게 변하거나 창이 활성화가 안되는 현상이 있음

웹필터 제품 연계 (지란지교 제품)

웹필터 제품의 연동방식

- UI의 Html의 Form에서 submit하기 전에 웹필터 서버로 전송하여 필터링 요청.
- 웹필터는 정해진 룰에 따라 필터링 검사를 하고 적합여부를 회신
- UI는 웹필터 검사 결과에 따라 서버로 submit하든지, 사용자에게 필터링 내용을 alert으로 알림.

적용이슈

nexacro에서 Trasaction 패킷은 xml을 기본으로 함. 그러나 지란지교의 웹필터는 xml을 처리하는 기능을 지원하지 않음.

해결방안

- 웹필터 서버를 호출하는 시점을 클라이언트 UI단에서 서버단으로 변경 가이드.
- nexacro에서 Transaction요청 후 WAS단에서 웹필터 서버를 후출하는 방식으로 변경.
- Nexacro를 적용한 업무에서 웹필터를 적용하는 과정에 대한 셈플링을 작성하기로 함.

(주체 - 운영사 : KCC, 웹필터 셈플링 가이드 : 지란지교)

CkEditor등 웹브라우저 컴포넌트로 연동하는 경우 getProperty사용을 피하고 getElementByid로 사용

원인

IE 11버전부터 스펙변경

상세분석내용

마이크로소프트사에서는document.all 메소드를 더 이상 지원하지 않으며 대신 getElementById를 사용하도록 권장하고 있습니다. 이는 보다 많은 웹사이트에서 최신 표준을 지원하기 위하여 기능을 추가, 변경 및 제거하였습니다.

all_property

관련 참조 URL은 https://msdn.microsoft.com/ko-kr/library/ms537434(v=vs.85).aspx 입니다.
IE 11의 호환성 변경에 대한 URL은 https://msdn.microsoft.com/ko-kr/library/bg182625(v=vs.85).aspx 입니다.

해결방안 (수정 예)

화면 수정내용

수정내용을 보다 확인하기 편리하게 하기 위하여 기존 스크립트를 주석처리한 후 신규 스크립트를 추가하였습니다.

가. 변수 변경

화면의 docWeb변수 선언 변경

기존 var docWeb와 같은 변수선언은 window영역에 추가되므로 this.docWeb으로 변경하여 해당 화면에서만 사용하도록 개선하였습니다.

나. getElementById로 변경

위의 설명한 대로 all대신 getElementById로 수정하였습니다.

스크립트 수정내용

[ 변수 선언 ]

img_1

[ 저장 ]

getProperty

[ 콜백 함수 ]

img_2

[ onload ]

img_3

화면의 Edit 속성의 모든 컴포넌트 위에 마우스를 이동시 깜박임 현상.

현상

커스(캐럿)가 깜박이는 현상

해결방안

[RC 72520 , RP 75135 분석답변완료] IE11 버전 .44 이전 버전에서의 현상(IE버그) 로 .44 이상으로 브라우져 업데이트 하면 증상해결된다 전달.

ExtCommonApi 기능이 windows10에서 작동하지 않는 이슈

현상

버전 : 2015.4.20.1 (3.3.0.0)
환경 : Windows 10 Home (64bit), Memory 4GB
증상 : 사용자pc 시간세팅 안 됨.
함수 : ext_SetTime(dDate)
환경에서 사용자 PC시간 세팅이 안됨

해결방안

해당 모듈 패치

참고사항

ExtCommonApi 의 ext_SetTime(dDate)가 windows10 에서 기능이 작동하지 않음.
ExtCommonApi  버전 : 2015.4.20.1 (3.3.0.0)

WiseGrid 프로그램 사용시 화면이 표현되지 않음(하얗게 보임)

현상

wiseGrid연동화면 복제시 5번째화면에서 화면 깨지는 현상

원인

MiPlatform 330U 2017.7월 이전버전에서 발생하는 버그

해결방안

현재 롯데하이마트에서 사용하고 있는 MiPlatformU 3.3.0.360 (2012.08.21) 버전에 기능 패치하여 제공하기로 함.

넥사크로플랫폼 Runtime에서 나모 크로스에디터사용시 오류문의

원인

크로스에디터에서 동영상 첨부시 오류메세지 나옴 IE11에서는 정상이나 그이하 버전에서 발생.
넥사크로플랫폼에서 웹브라우저컴포넌트에 연결시 ie7모드로 실행되어 발생함.

해결방안

웹브라우저 컴포넌트는 IE11로 동작하도록 처리 
(레지스트리 정보 설정)

참고사항

https://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version#RegistryKeyInstallationforyourApplication

HttpOnly 쿠키 사용

쿠키 사용시 HttpOnly속성을 설정하게 되면 스크립트 접근이 안되는 문제

참고사항

ross-site 스크립팅 (XSS) 공격을 방지하기 위해, 
HTTP-only 쿠키는 Document.cookie 프로퍼티, the XMLHttpRequest 그리고 Request API를 통해 자바스크립트로 접근할 수 없습니다. 
자바스크립트 내에서 당신의 쿠키를 이용해야 할 필요가 없을 경우에 이 플래그를 설정하시기 바랍니다. 
특히, 세션을 정의하기 위한 용도로만 쿠키를 사용한다면, 자바스크립트 내에서 쿠키를 사용할 필요가 없으며 HttpOnly 플래그를 설정해야 합니다.

Xecure Session 관련 오류

참고사항

제큐어 endSession을 제큐어 session 생성 전 호출하도록 연동모듈 변경
EndSeesion(xgate_addr) 사용 시 xgate_addr 연결된 모든 세션이 사라짐

고객사 : 메리츠화재

onlyone true 로 하였음에도 불구하고 중복실행

현상

프로그램 실행을 한번만 실행하도록 설정한 onlyone기능이 정상동작하지 않음
즉 중복 실행이 가능

원인

외부모듈의 영향 발생

제품명 : nethelperV7

해결방안

해당 모듈 삭제시 정동동작하므로, 삭제 또는 관련업체에 확인요청 필요

참고사항

onlyone true 로 하였음에도 불구하고 중복실행이 된 내부PC들은 nethelperV7라는 프로그램이 설치 되어 있을시 발생 하였습니다.
아이젝스에서 제공하는 보안관리 및 정보유출 방지 솔루션, NetHelper 관련프로그램이라고 합니다.

고객사 : 나이스신용정보(주)에서 발생한 케이스

개인정보 유노출 방지 사업진행중에 넥사로 만들어진 게시판과 연계시 게시글 내에 개인정보가 포함되어 있을때 사용자 (글쓴이) 에게 메시지를 보내는 방법

현상

차단팝업을 띄울때가 upload 에 대한 첫번째 요청에 대해 완료콜백지점인 onsuccess에서
띄우게 되는데 이때 다시한번 팝업창에서 업로드저장 로직을 한번 더 기존 첨부한 파일에 대해 업로드를 태워야 하는데 이미 onsucess에 도달하였기 때문에 첫번째 업로드 파일에 대한 정보에 대해서는
내부적으로 초기화 되어 재요청을 할수가 없는 상태.

수정소스

* 응용기술지원팀 대안받은내용.
1.ExtFileUpDownload.js 교체
 
2. 에러메시지(string)을 체크해서 파일유지를 위한 boolean값 반환 함수를 form에 생성.
   ex)
//return: boolean 형태(false: 개인정보 포함 파일유지, true: 정상 처리 > 파일 삭제)
this.checkServerMessage = function(msg) {
   //msg 내용 체크 후 true/false 반환
     return true or false;
}
 
3.ExtFileUpload 객체( this.extUp )에 메시지 확인 후 첨부파일 삭제 여부 반환 함수 설정
           /// 메시지 확인 후 첨부파일 삭제 여부 반환 함수 설정.
           this.extUp.setMsgCheckFunc(this, this.checkServerMessage);
 
 
4.UI에서 업로드 통신 성공시 발생하는 아래 event에서 추가처리(샘플기준)
/*
*   통신 성공시에 발생하는 이벤트입니다
*/
this.extUpload_onsuccess = function(obj, e) {
           if (this.img_loading.visible)
           {
                     this.img_loading.set_visible(false);
           }
          
           //[신규추가]수동 처리용.
          if( !this.checkServerMessage(e.errormsg) ) {
                     return;
          }
          
           this.ds_files.applyChange();
          
           if(e.datasets)
           {
 
  ... 이하생략
}
 
 
4.재전송이 완료되었을 경우 아래 메소드 호출.
    ///수동 처리용
    this.extUp.removeAll();
    this.ds_files.applyChange();

참고사항

해당 기능은 넥사크로 기본 FileUpload 사용시에는 문제가 되지 않으며 
playnexacro.com에서 배포하는 FileUpload프로그램의 문제로 해당 소스 수정이 필요함

나모웹에디터 사용시 화면로딩 속도 건

참고사항

나모컨트롤관련하여 setProperty구문 한줄 넣었을때와 안넣었을때와 1~2초정도 차이발생.
//담당자와 논의 확인후 setProeprty 구지 넣지 않아도 됨으로 판단, 이건을
접수한 별도 개발자분과 함께 확인시 접수 될 당시와 같이 재현이 되지 않음. 이부분은 확인에서 제외됨.

어떤 Property를 변경했는지는 확인안됨

농협경제지수 고객에서 발생한 케이스임

ActiveSquare 8 나모 사용할시 폼영역의 스크롤을 이동할 경우 깨짐현상

참고사항

넥사크로 1300버전에서 발생하여 이후 최신버전을 사용하도록 안내함 
또한 엔진 및 Lib파일을 동일한 버전으로 맞추도록 함

tmax.dll과 EvAgent20.dll

현상

tmax.dll, EvAgent20.dll를 컴포넌트 파일에서 인식하지 못함

참고사항

해당 모듈은 외부모듈을 연동한 파일로 
컴폰너트 폴더가 아닌 XPLATFORM 엔진폴더에 파일이 있어야 정상적으로 Load가 됨
따라서 컴포넌트 폴더가 아닌 엔진폴더에 배포하여야 합니다.

tmax.dll, EvAgent20.dll 등 투비소프트에서 기본 제공하는 dll 파일 외에

외부 dll 파일 중 일부는 XTmaxAdp.dll, XPushH20.dll 어댑터와 상호 의존적이고,

무조건 엔진 경로를 바라보게끔 내부적으로 세팅이 되어 있는 것으로 추측 됨.

넥사크로플랫폼에서 그리드에디트에서의 엔터값 IN 오동작발생현상

현상

바코드 스캐너를 통하여 입력을 받는데 에디트에서는 문제없이 엔터값이 들어오나 그리드에서는 되었다 안되었다가 한다고 함.

분석내용

현재 넥사크로제품은 grid의 key down event에서 enter키가 입력이 되면 값을 확정하는 로직의 스펙으로 구현되어 있습니다. 해당 로직으로 인해 커렌트로우의 edit를 hide시킨후 다음으로 넘어가게 됩니다.

현재 현상이 발생되는 소스구현로직은 key down이 아닌 key up에서 입력된 엔터값을 확정하도록 구현이 되어 있는데 edit을 hide 시키는 이때 시점차이로 인해 key down이 발생한 input node가 사라지면서 up을 발생시킬 대상이 없어져 발생이 되고 있는것으로 판단됩니다.

실질적으로 key up에서 로직을 구현하였다 할지라도 key down 이벤트는 key up보다 선으로 내부적으로 발생하게 되는데 해당부분에서 node가 사라짐으로 인해 Up 발생시킬 대상이 없어 위와 같은 현상을 초래하는 것으로 판단됩니다.

참고사항

위의 현재 넥사크로제품 현재구현스펙으로 인해 editcontrol을 hide 하는 함수를 호출하는 시점을 변경하게 된다면 다른 문제가 발생하게 될 소지가 상당히 크므로 넥사크로 엔진단의 변경하여 처리하는 방법은 어려움이 있습니다.    

넥사크로제품 현재 구현스펙 근거로 현상을 해소하는 방법은 grid 에서는 keydown 이벤트 또는 onenterdown이벤트로 변경하여 처리하는 방법이 있습니다.  

전반적으로 keydown  처리를 하므로 해당변경으로 인해 사이드이펙트는 크게 염려하지 않으셔도 될것으로 판단됩니다.  
    
위의 변경 처리로 고객사시스템 Embedded POSReady 2009 / version2.0 / Service Pack3 / IE8  기존 우회처리를 할수 없었던 POS장비 사용자의 현상도 해소될것으로 판단됩니다.

또한 노트북 및 기존 옵션 체크의 유무관련없이 정상적으로 동작 될것으로 판단됩니다.

바코드 연동

현상

바코드찍을시 그리드의Edit에서만 마지막 엔터키값이 들어오지 않는현상.
(그외 모든 컴포넌트에서는 정상)
실사용PC win8,win10 모두발생. (IE11에서확인) 
첫번째로 찍을시 들어오지 않고 연속으로 바로찍으면 엔터값이 들어오는현상.(반복)

고객사 자체확인사항

인터넷옵션->보안->보호모드사용  체크를 풀면 정상으로 엔터값이 들어오고 체크되어 있으면 현상발생.
체크가 되어있더라도 웹브라우저에 시스템탭을 제외한 아무탭이나 열려있으면 정상으로 다시 엔터키값이 들어옴.

분석내용

현재 넥사크로제품은 grid의 key down event에서 enter키가 입력이 되면 값을 확정하는 로직의 스펙으로 구현되어 있습니다. 해당 로직으로 인해 커렌트로우의 edit를 hide시킨후 다음으로 넘어가게 됩니다.

현재 현상이 발생되는 소스구현로직은 key down이 아닌 key up에서 입력된 엔터값을 확정하도록 구현이 되어 있는데 edit을 hide 시키는 이때 시점차이로 인해 key down이 발생한 input node가 사라지면서 up을 발생시킬 대상이 없어져 발생이 되고 있는것으로 판단됩니다.

실질적으로 key up에서 로직을 구현하였다 할지라도 key down 이벤트는 key up보다 선으로 내부적으로 발생하게 되는데 해당부분에서 node가 사라짐으로 인해 Up 발생시킬 대상이 없어 위와 같은 현상을 초래하는 것으로 판단됩니다.

해결방법

위의 현재 넥사크로제품 현재구현스펙으로 인해 editcontrol을 hide 하는 함수를 호출하는 시점을 변경하게 된다면 다른 문제가 발생하게 될 소지가 상당히 크므로 넥사크로 엔진단의 변경하여 처리하는 방법은 어려움이 있습니다.    

우회 방안은 현상발생하는 grid 에서는 기존의 keyup을 keydown 이벤트 또는 onenterdown이벤트로 변경하여 처리하는 방법이 있습니다.

rMateChart system.print 출력 실패시 참고

현상

rMateChart 화면이 있는 폼을 system.print 을 이용항 출력시 rMateChart 출력되지 않음

해결방안

/*
 * 버튼 클릭 시 차트를 Print(인쇄)
 * 해당 기능은 브라우저의 Snapshot기능을 사용하므로 IE 9 부터 사용이 가능합니다.
 * IE8을 사용하실 경우 Print를 할 때, 차트를 재생성 후 차트의 displayCompleteCallFunction에서
 * system.print(this)를 실행하면 이상없이 출력 가능할 것 같습니다.
 */
this.Button00_onclick = function(obj:Button,  e:nexacro.ClickEventInfo)
{
 //Print에 필요한 Object들을 정의  
 var chart1 = document.getElementById("chart1");

 var chart1Holder = chart1.parentNode; 
 var img = new Image();
 var base64src = chart1.getSnapshot();    
 
 //이미지 설정
 img.src = 'data:image/png;base64,' + base64src;
 img.style.width = chart1Holder.style.width;
 img.style.height = chart1Holder.style.height;
 
 //차트와 이미지를 교체하고, 차트는 display none
 chart1.style.display = "none";
 chart1Holder.appendChild(img);
 system.print(this);
 
 //차트와 이미지를 원래대로 복구
 chart1Holder.removeChild(img);
 chart1.style.display = "block";
}

rMateChart 사용시 오류

현상

Security sandbox.violation Externallnterface caller rmateChart.swf can not Acces...

원인

다른 도메인에 위치한 플래시 파일을 또 다른 도메인에서 불러오려고 할 때 발생하는 에러라고 합니다.

참고사항

해당 문제를 해결하기 위해서는 플래시 파일이
위치한 다른 도메인의 가장 최상위(var/www/html)에 위치한 crossdomain.xml을 설정하는 등 이에 대한 확인점검이 필요한 부분이라 합니다.

관련 내용에 대한 상세부분은 리어모어 업체에 문의하시기 바랍니다.

ActiveX의 Navigate2 함수를 이용하여 window.open으로 팝업을 오픈시 오류

현상

시스템 종료가 이미 예약되어 있습니다

분석내용

해당 현상은 아래 링크에 나와있는 것처럼 웹상에 reporting된 문제로 xplatform 제품상의 문제가 아님.

https://connect.microsoft.com/IE/feedback/details/2051879/getting-an-error-as-a-system-shutdown-has-already-been-scheduled-on-window-open-command-of-javascript-after-upgrading-to-ie11

해결방법

WebBrowser 컴포넌트를 이용하여 처리 및 ExtCommon을 이용하여 레지스트리 정보 변경.
- OS 32bit 또는 64bit 여부를 사용자 PC의 레지스트리 정보로부터 얻어온다.
Ex) var Extension = new ExtCommon();

ext1

- 팝업을 띄우기 전, ExtCommon의 regGetValue() 함수를 이용하여 사용자 PC의 레지스트리 정보를 구한다.
- 사용자 PC의 OS 환경과 IE 버전을 바탕으로 ExtCommon의 regSetValue() 함수를 이용하여 조건에 맞는 레지스트리 정보로 변경한다.
ex) XPlatform.exe의 IE버전을 사용자 PC의 IE 버전으로 변경.

ext2

ext3

- showModeless로 팝업(.xfdl)을 띄운다.
- 팝업 Form에 WebBrowser 컴포넌트를 이용해서 url에 주소를 세팅한다.
ex)  webBrowser.url = "http://www.tobesoft.com?date=";
이미지는 참고용이고, 고객사에서는 IE 9 버전 이상에서 정상 작동하도록 세팅함.


ㅇㅇㅇ 차장 PC – 정상 작동 확인
( Windows 7 / 32bit / IE 11 )

ㅇㅇㅇ 과장 PC – 정상 작동 확인
( Windows 7 / 64bit / IE 10 )

VDI를 통해 접속하는 경우 MiPlatform의 창사이즈 오류

현상

VDI시스템에서 기간계 시스템을 실행 한 후 VDI시스템 접속을 끊고 재 접속시 기간계 시스템의 화면
사이즈가 작아지는 현상이 발생합니다.
전용브라우저의 전체 창 사이즈가 작아져서 타이틀바의 “최소/원래/최대”버튼이 사라져서 안보이는
상태로 표시됩니다.

처리방안

Global onsize event에서 창크기가 작아진 경우거나 커진 경우라면 원래의 창크기로 조정하는 스크립트
를 추가작성하여 이를 보완하였습니다.
최초 개발시 1024 * 768 고정사이즈 였다가 현재는 1280 * 1024 고정사이즈로 변경되었습니다.
그래서 1280 넓이를 유지하도록 스크립트를 보완수정하였습니다.

사용버전이 2008년 빌드버전인 MiPlatform 3.2인 관계로 최소화시 appstatus상태가 정확하게 표기되지
않는 버그도 발견되었으나, 현재 패치 계획이 없어 스크립트 처리로만 진행하였습니다.
테스트 결과, 별다른 문제 없이 오류를 잘 해결한 상태로 확인되었습니다.

참고사항

VDI환경은 자원의 설정(램크기, 해상도, 하드디스크 용량등등)에 따라서 실행속도 차이가 존재합니다.
근본적인 원인 파악은 매우 어려우므로, 현상을 해결하는 방법에 초점을 맞추어 진행하는 것도 좋을 것
같습니다.

해당 내용은 특정고객사에서 발생한 문제로 참고용으로 사용하시기 바랍니다.

CTI모듈 사용시 Dataset clearData메소드를 호출시 오류발생

원인

CTI장비로부터 Call이 인입되는 경우 발생하는 이벤트로부터 시작되는 로직으로 Dataset
clearData메소드를 호출하는 시점에 발생하고 있음.

clearData메소드 호출을 주석처리하면 발생하지 않고 있음.

해결방안(우회코드)

topframe영역에서 include하고 있는 공통스크립트 함수에서 시작되며, 화면의 div안에 있는
화면의 Dataset을 clear하는 시점에 내부오류 팝업창이 발생하고 있음(엔진 내부로 보여짐)
해당 Dataset은 같은 화면의 Grid와 바인딩 되어 있음.

화면의 버튼을 클릭하여 동일한 로직(cleardata)를 수행할때는 오류 없음.
clear, deleteall 동일한 오류 발생됨.
deleterow를 사용하면 오류 발생하지 않음.
이를 바탕으로 우회코드를 작성하여 가이드 하였음.
// deleterow처리시 속도저하 없는 코드 가이드 코드 
grid.enableevent = false;
grid.enableredraw = false;
for (var i=ds.getrowcount(); i>=0; i--) {
 ds.deleterow(i);
}
grid.enableevent = true;
grid.enableredraw = true;

참고사항

CTI장비의 이벤트로 시작하는 (사용자 action처리가 아닌) 동작에서 발생하는 케이스로 scope문제와
그리드 바인딩으로 인한 갱신시점과 맞물려 발생하는 특이한 케이스로 보입니다.
그래서 deleterow처리시에는 해당 현상이 발생하지 않는 것으로 짐작하고 있습니다.

XenApp환경에서 마이플랫폼 정상적인 실행을 위한 처리 방법

참고사항

XenApp서버 사용에 필요한 구성이 되지 않았더라도 임시방편으로 사용할 수 있는 방법이 있습니다.
이 방법은 XenApp 담당자의 도움이 필요하므로 같이 처리하는 것이 좋습니다.

rMate차트 라이센스 오류 발생(nexacro platform14)

원인

라이센스 관련 변수설정 오류

해결방안

rMateChart License파일의 변수선언을 var에서 this로 변경하여 처리완료

rMateChart버전 업그레이드시 참고사항

rMateChart 2.0을 4.0으로 변경 시 참고사항
(해당 내용은 리어모어 문ㅇㅇ 이사님을 통해 확인받은 사항)

참고사항

먼저 우선 라이세스에 문제가 없는지 체크를 해야 합니다.

2.0을 구매한 상태로 보이며, 4.0으로 업그레이드시 무상인지 – 영업대표 확인 필요

프로그램 영향도 측면 (버전업그레이드에 따른 소스 영향도)

rMate차트 2.0과 4.0은 레이아웃이 다르기 때문에 바로 사용할 수 없습니다.

따라서 패치 후 문제가 생기면 화면에 대해 해당 레이아웃 소스를 리어모어에 보내어 수정부분을 확인받아 소스에 반영과정이 필요하며, 반드시 테스트 과정이 필요합니다.

Microsoft.XMLHTTP

현상

Microsoft.XMLHTTP을 이용하여 url호출시 한번은 성공하나 두번째 부터 호출이 안되는 현상

원인

Microsoft.XMLHTTP 에서 URL호출 후 동일한 조건을 재 호출시 cache기능이 동작하기 때문에 발생하는 문제

해결방법

var objActiveX = new ActiveX();
this.addChild("ActiveXID", objActiveX); 
var timestamp = new Date();
var sUrl = "http://openapi.ccourt.go.kr/openapi/services/IncidentInfoSvc/getIncdntTotalInfo?ServiceKey=서비스키&eventNo=2009헌라8" + timestamp;
var xmlHttp = objActiveX.createObject("Microsoft.XMLHTTP");

sUrl의 파라메터에 timestamp 즉 시간정보를 함께 넘겨주면 url정보가 바뀌기 때문에 매번 호출이 가능합니다.

XPLATFORM : VDI 환경에서 Div 스크롤 오동작

현상

VDI 환경에서 Div 컴포넌트에 마우스 클릭으로 스크롤 동작
발생

원인

XPlatform Div 컴포넌트 프로터티 중 dragscrolltype 값에 영향을 받음

해결방법

현재 XPlatform에서 dragscrolltype 값은 default로 "both" 로 설정되어있음.
해당 값을 "none" 으로 설정 시 정상 동작 확인.

참고사항

최근 VDI 환경에서의 제품 사용이 늘어나고 있습니다.

VsReport

vsreport를 사용해서 이미지를 보여주는데, 어느순간 이미지가 하얗게 보이는 현상

현상

putImaagePath를 여러 개 지정하여 사용하고 있으나 render를 마지막 시점에 하는 것이 보장되지 않음.
if ( nReason == 0 ) {
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage1.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage2.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage3.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage4.gif');
else if ( nReason == 1 ) {
        vsreport.render(vsview);
}

해결방안

PutImagePath() 가 모두 처리된 후 render를 처리하도록 처리 가이드
var ImgCnt = 1;
if ( nReason == 0 ) {
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage1.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage2.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage3.gif');
 vsreport.PutImagePath('ProductImage','C:\\web\\rpt\\ProductImage4.gif');
else if ( nReason == 1 ) {
        if(ImgCnt==5) {
            vsreport.render(vsview);
            ImgCnt = 1;
        } else
            ImgCnt ++;
}