본문 바로가기
웹/ASP

Windows Vista 및 Explorer 7 이상에서 MS Dhtml Editing Control 이 안 뜨는 문제

by 브래드.권 2013. 3. 26.

 

 

 

증상.

- Explorer 7 이상에서 Microsoft Dhtml Editing Control 을 사용하는 글쓰기 페이지 요청 시, 컨트

  롤이 뜨지 않고 tbContentElement 관련 오류 메시지 뜨는 경우.

 

해결책.

- Microsoft 에서 Windows Vista 및 Explorer 7 부터는 별도 ActiveX 형식으로 제공되어진 웹에디

  터 MS Dhtml Edit Control 을 지원하지 않습니다. ActiveX 라는 보안상의 취약점도 있거니와 웹

  브라우저에 웹에디터 기능이 내장되면서 거의 대부분의 사이트들이 내장 웹에디터 기능을 사

  용하지 해당 Dhtml 에디터를 사용하지 않기 때문에 지원을 하지 않는 것으로 보입니다.

  [참고 사이트] http://blog.naver.com/saltynut/120029796339


하지만 굳이 사용해야 한다면 아래와 같이 강제로 설치하여 사용할 수 있습니다.


첫번째 방법,

아래 레지스트리 파일을 다운받아 실행시킵니다.

이는 ActiveX 설치를 차단해 놓은 것을 해제하도록 레지스트리에 등록시키는 방법입니다.

 

EnableDhtmlEditorControl.reg

 

만약, 이 방법으로도 설치가 안 된다면 두번째 방법으로 아래 압축파일을 다운받아 ActiveX 를 강제로 설치합니다.

압축파일에는 Vista / 7 용 강제설치파일들이 있으며 해당 ActiveX파일을 강제 복사 및 등록을 시킵니다.

 

DHTML_system.zip


위의 두가지 방법으로 ActiveX 설치가 되고 웹에디터 컨트롤이 뜨게 된다고 해도

에디터 툴바에 있는 버튼들은 제대로 동작을 하지 않을 것입니다.

Vista 부터 Windows 내부 함수 호출방법이 틀려졌기 때문인데 이를 위해서는

해당 웹데이터 설치가 된 사이트 경로에서 toolbar.js 의 element.TBUSERONCLICK 관련 소스를 아래와 같이 수정해 주어야 합니다.

원문은 if (element.TBUSERONCLICK) { 로 찾으시면 됩니다.

 

[원문]

 

if (element.TBUSERONCLICK) {

    eval!(element.TBUSERONCLICK + "anonymous()");

}

 

 

 

[수정문]

 

 

if (element.TBUSERONCLICK) {

//IE 8 이후 버전도 사용가능하도록 수정.

             var functionname = '';

             var re = /function (.*?)\(\)/;

             if(re.test(element.TBUSERONCLICK)){

                           functionname = RegExp.$1 + '();';

             }

 

             eval!(element.TBUSERONCLICK + functionname);

//    eval!(element.TBUSERONCLICK + "anonymous()");

}

 

 

[참고 사이트] http://rebellion21.tistory.com/17