1.엑스플랫폼 - 공통 제약사항

Edit

1.1String.replace 함수 사용 시 오류

1.1.1현상

String.replace 함수 사용 시 전역 매칭플래그(‘g’)를 지정하지 않아도 항상 전체 문자열에서 일치하는 패턴을 찾아서 변경하는 오류가 엑스플랫폼 런타임 환경에서 발생합니다.

String.replace 함수 사용 시 전역 매칭플래그를 지정하지 않으면 strRegExp의 표현식을 만족하는 첫 번째 패턴 문자열만을 바꾼 후 중단하고, 전역 매칭플래그가 지정된 경우에는 대상이 되는 전체 문자열에서 strRegExp의 표현식을 만족하는 모든 패턴 문자열을 찾아 바꾸는 것이 기본 동작이지만 오류가 발생하고 있습니다.

스크립트

웹브라우저 처리 결과

엑스플랫폼 런타임 처리 결과

var strText = "www.tobesoft.com";

result = strText.replace(".", "_");

www_tobesoft.com

www_tobesoft_com

var strText = "www.tobesoft.com";

result = strText.replace(/./, "_");

www_tobesoft.com

www_tobesoft_com

var strText = "www.tobesoft.com";

result = strText.replace(/./g, "_");

www_tobesoft_com

www_tobesoft_com

1.1.2대안

ECMA Script에 정의된 String.replace 함수의 동작과 다르게 구현된 오류로써 기존에 개발 완료된 모든 사이트의 스크립트를 수정해야 하는 문제가 발생하기 때문에 현재 상태를 유지하기로 했습니다.

아래와 같은 스크립트로 대체하여 사용하십시오.

var strText = "abcda";
var matched = strText.match(/a/);
if (matched != null)
    strText = RegExp.leftContext + "b" + RegExp.rightContext;
alert(strText); // "bbcda"

1.2switch~ case문 오류

1.2.1현상

switch 문 조건절의 Type 과 case 라벨의 Type 이 다른경우 오동작하는 문제가 엑스플랫폼 런타임 환경에서 발생합니다.

switch(2)
{
    case "1":
        alert("1");
    case "2":
        alert("2");
    default:       
        alert("default");
}

위와 같이 Script를 사용할 경우 결과가 ECMA(AJAX 버전 포함) Spec 상으로는 "strict equal" 처리가 되어 "default" alert 창만 떠야 하지만 엑스플랫폼 런타임의 경우 "2","default" 두 번의 alert 창이 뜨는 오동작이 발생하고 있습니다.

1.2.2대안

ECMA Script에 정의된 switch case~문의 동작과 다르게 구현된 오류로써 기존에 개발 완료된 모든 사이트의 스크립트를 수정해야 하는 문제가 발생하기 때문에 현재 상태를 유지하기로 했습니다.

switch 문 대신 if 문을 사용하면 이 문제를 해결할 수 있습니다.

1.3일본어 IME 사용시에 IME 상태 원복 오류

1.3.1현상

일본어IME 를 사용하는 경우 global IME 설정 상태일 때 윈도우의 FileDialog 창을 띄운 후에 Dialog 가 닫히고 다시 원래 화면으로 돌아온 경우에 최종 IME상태가 바뀌는 현상이 엑스플랫폼 런타임 환경에서 발생합니다.

해당 현상은 윈도우 7 이전 OS 에서만 발생하며 한글 IME를 사용하는 경우는 발생하지 않습니다. 엑스플랫폼 런타임 환경이 아닌 Internet Expolorer 나 Chrome 등의 기타 브라우저에서도 같은 현상이 발생합니다.

1.3.2대안

윈도우 7 이전의 IME 시스템에서 발생하는 문제로 OS 를 업그레이드 하는 방법외에 현재 가능한 대안은 없습니다.

1.4Layered Window Drawing 오류

1.4.1현상

Layered 로 설정된 Window(ChildFrame, MainFrame 등)의 위에 Layered가 아닌 Window가 새로이 생성되는 경우, 생성되는 Window가 나타날 자리에 구멍이 뚫린듯한 모습이 순간적으로 보이는 현상이 엑스플랫폼 런타임 환경에서 발생합니다.

  1. layered=true 로 생성된 MainFrame 에서 layered=false 인 ChildFrame을 생성하여 ShowModal 호출

  2. 잠깐 보이는 구멍난 듯한 화면

  3. ChildFrame 나타남

이 현상은 XPlatform에서 특이한 처리때문에 발생한 것이 아닌 Windows OS 자체의 Layered Window Drawing 방식에 의한 것으로 일반 Win32로 Layered Window를 생성하여 그 위에 Non-Layered를 생성하면 동일 증상이 발생합니다.

이러한 현상은 Layered Window가 일반 Window와 같은 Layer에 존재하는 것이 아닌, Non-Layered Window로만 완성된 화면 위에 Layered Window를 그리고 있기 때문에 발생하는 것으로 추정됩니다. 새 Window가 나타나기 전 해당 Window의 아래 Layer 배경을 지운 화면에 Layered Window가 포함되어 있지 않기 때문에 구멍 난 화면이 보이는 것입니다.

특이사항으로 윈도우 비스타 이상에서 Aero 기능을 사용하면 위 현상이 발생하지 않습니다. Aero 기능을 사용할 때 OS에서 화면 전체를 Double Buffering 처리하기 때문입니다.

1.4.2대안

시스템의 Drawing 처리 방식에 의한 것으로 현재 대안이 없습니다. Layered의 Child Window를 생성할 때 Layered로 동일하게 생성하기를 권장합니다.

1.5MS office 365, 2016 버전의 2017년 03월 패치부터 엑셀 Export 결과물이 변형되는 현상

1.5.1현상

MS office 365, 2016 버전을 사용하는 시스템에서 엑셀 export 결과물이 기존과 다른 모양으로 나타나는 현상입니다. 2017년 3월 이후의 패치 버전으로 업데이트 시 해당 현상이 나타납니다.

구체적인 현상은 아래와 같습니다.

오류 현상

처리 여부

column width 가 반영되지 않음

엑스플랫폼 내부에서 보완, 수정 (2017년 5월 정기)

font name, color, size 가 반영되지 않음

엑스플랫폼 내부에서 보완, 수정 (2017년 5월 정기)

data가 없는 cell 이 나타나지 않음

엑스플랫폼 내부에서 보완, 수정 (2017년 6월 정기)

cell align 이 반영되지 않음

보완 불가

merge 된 그리드를 출력 시 모양 변경

보완 불가

1.5.2대안

현상이 발생하기 이전의 office 업데이트 버전(16.0.7870.2038)으로 다운그레이드합니다.

  1. Windows 시작 버튼을 마우스 우측 버튼으로 클릭 후 실행을 선택합니다.

  2. 실행 창에 아래 내용을 복사 붙여넣기 후 확인을 누릅니다.

    "C:\Program Files\Common Files\microsoft shared\ClickToRun\officec2rclient.exe" /update user updatetoversion=16.0.7870.2038

  3. 다운그레이드가 완료되면 문제가 해결되었는지 확인합니다.

하위 빌드로 다운그레이드하였기 때문에 재업데이트 시 같은 문제가 나타납니다. 엑셀 실행 후 [파일 - 계정 - 업데이트 사용 안 함] 설정을 통해 Office 업데이트를 해제하여 사용하시면 됩니다.