중요한 사항이라 기록 해 둠.
(전혀 안쓰는 블로그지만 가끔씩 생각나면 여기다. 쓰게 되는군아!!)
FCKEditor 2.x 버전에서 (혹은 그 이하도 마찬가지일지도 모름) IE8로 접근 할 시에
액세스가 거부되었습니다 라는 스크립트 에러 메세지로 글쓰기 영역이 생성되지 않는 문제가 있다.
해당 문제는 IE8 에서 일어나며 원인은 몇가지 있으나 우리에겐 원인이 중요 한 것이 아니라
해결책과 대안이 늘 중요하다 ㅡ.ㅡ
원인과 또 다른 해결 방법:
http://blog.naver.com/webdzang?Redirect=Log&logNo=50047871069
하지만 위 링크의 해결 방법은 우리의 상황에 맞지 않으며
직접적인 원인을 수정해야만 했다.
따라서 구글신에게 문의 해 본 결과, 아래와 같은 해결책을 찾았다.
소스에 IE8 일때의 경우를 추가:
http://cksource.com/forums/viewtopic.php?f=6&t=13378&p=36503
이에 따라 수정 하려면 몇가지 고통이 필요 한데,
Compressed 된 fckeditorcode_ie.js 파일을 그대로 눈알빠지게 봐가며, 변수명 비교해가며, 수정 할 것인가
아니면 source 폴더의 스크립트 파일들을 수정하여 재 압축 할 것인가 라는 선택
선자는 고통이고 후자는 좀 귀찮다..
귀찮은건 고통보다 싫기에, 선자를 택하여 수정 했다.
fckeditorcode_ie.js 파일을 연다. (FCKEditor 2.6.6 버전 기준)
var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};
부분을 찾아
IsIE8: /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1],10)>=8) 를 추가한다.
var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE8: /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1],10)>=8),IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};
fckeditor.html 파일을 열어 아래 부분을
// Save a reference to the default domain.
var FCK_ORIGINAL_DOMAIN ;
// Automatically detect the correct document.domain (#123).
(function()
{
var d = FCK_ORIGINAL_DOMAIN = document.domain ;
while ( true )
{
// Test if we can access a parent property.
try
{
var test = window.parent.document.domain ;
break ;
}
catch( e ) {}
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
d = d.replace( /.*?(?:\.|$)/, '' ) ;
if ( d.length == 0 )
break ; // It was not able to detect the domain.
try
{
document.domain = d ;
}
catch (e)
{
break ;
}
}
})() ;
// Save a reference to the detected runtime domain.
var FCK_RUNTIME_DOMAIN = document.domain ;
var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
아래와 같이 바꾼다
var IsIE8 = /*@cc_on!@*/false && ( parseInt( navigator.userAgent.toLowerCase().match( /msie (\d+)/ )[1], 10 ) >= 8 );
// if IE8, setup a bunch of popups that use a domain we can touch....
var GLOBAL_POPUP_BUCKET_FCK_IE8 = [];
if(IsIE8){
for(i=0; i<20; i++){
GLOBAL_POPUP_BUCKET_FCK_IE8.push(window.createPopup());
}
}
// Save a reference to the default domain.
var FCK_ORIGINAL_DOMAIN ;
var FCK_RUNTIME_DOMAIN ;
// Automatically detect the correct document.domain (#123).
(function()
{
var d = FCK_ORIGINAL_DOMAIN = FCK_RUNTIME_DOMAIN = document.domain ;
while ( true )
{
// Test if we can access a parent property.
try
{
var test = window.parent.document.domain ;
break ;
}
catch( e ) {}
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
d = d.replace( /.*?(?:\.|$)/, '' ) ;
if ( d.length == 0 )
break ; // It was not able to detect the domain.
try
{
// Before setting document.domain, set it for all the popups we've created. I hope this fucking works....
for(i=0; i < GLOBAL_POPUP_BUCKET_FCK_IE8.length; i++){
GLOBAL_POPUP_BUCKET_FCK_IE8[i].document.domain = d;
}
document.domain = d ;
}
catch (e)
{
break ;
}
}
})() ;
var FCK_RUNTIME_DOMAIN = document.domain ;
var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
// if IE8, setup a bunch of popups that use a domain we can touch....
var GLOBAL_POPUP_BUCKET_FCK_IE8 = [];
if(IsIE8){
for(i=0; i<20; i++){
GLOBAL_POPUP_BUCKET_FCK_IE8.push(window.createPopup());
}
}
// Save a reference to the default domain.
var FCK_ORIGINAL_DOMAIN ;
var FCK_RUNTIME_DOMAIN ;
// Automatically detect the correct document.domain (#123).
(function()
{
var d = FCK_ORIGINAL_DOMAIN = FCK_RUNTIME_DOMAIN = document.domain ;
while ( true )
{
// Test if we can access a parent property.
try
{
var test = window.parent.document.domain ;
break ;
}
catch( e ) {}
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
d = d.replace( /.*?(?:\.|$)/, '' ) ;
if ( d.length == 0 )
break ; // It was not able to detect the domain.
try
{
// Before setting document.domain, set it for all the popups we've created. I hope this fucking works....
for(i=0; i < GLOBAL_POPUP_BUCKET_FCK_IE8.length; i++){
GLOBAL_POPUP_BUCKET_FCK_IE8[i].document.domain = d;
}
document.domain = d ;
}
catch (e)
{
break ;
}
}
})() ;
var FCK_RUNTIME_DOMAIN = document.domain ;
var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
다시 fckeditorcode_ie.js 를 열어 아래 부분에
var B; if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');
빨간색으로 표시된 브라우저 처리 부분을 추가해준다
var B;
if ( FCKBrowserInfo.IsIE8 )
{
this._Popup = GLOBAL_POPUP_BUCKET_FCK_IE8.pop();
B = this.Document = this._Popup.document ;
FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
}
else if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');
if ( FCKBrowserInfo.IsIE8 )
{
this._Popup = GLOBAL_POPUP_BUCKET_FCK_IE8.pop();
B = this.Document = this._Popup.document ;
FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
}
else if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');
끝 ㅡ.ㅡ;
Yes, really.
답글삭제Hi there would it be alright if we used some information from here to use on one of my sites? cheers mate.
답글삭제Hi bud would it be alright if we took some information from this blog to use on one of my websites? cheers buddy.
답글삭제ye Secrets eyelid lifter and Eye Secrets lid tightener are available to seize away the beggary in the interest of precarious and grievous surgery conveniently and sell for effectively. With the Appreciation Secrets eyelid lifter, it is a impermanent, painless and compliant portion of lifting the eyelid area giving a wider-eye look and making you look younger and more radiant. Eye Secrets eyelid lifter is hook hypoallergenic, wholly harmless pro all to necessity, the adhesive strips that you solicit to the purpose consist of a medical grade hypoallergenic adhesive which eliminates the risk of irritation like with some other eyelid lifters
답글삭제@lip plumper that works - 2010/11/18 09:08
답글삭제Yes, you can