2010-03-30 3 views
7

의 이름을 확인하는 방법 :프로그램 내 ASP.NET 페이지의 코드 숨김에서 내 페이지로 프로그래밍 CKEditor 인스턴스를 추가 한 CKEditor 인스턴스

VB.NET :

itemEditor = New CkEditor 
cell.Controls.Add(itemEditor) 

. .. 잘 작동합니다. 내가 다시 게시에 HTML을 얻을 수 있고 그것으로 물건을 할.

그러나 클라이언트 쪽 물건을 다른 컨트롤에서 꺼내어 onchange 이벤트를 처리하여 텍스트에 삽입하려는 경우도 있습니다. 그래서

, 내가 같은 물건을 할 수 있도록 자바 스크립트 에디터 인스턴스의 이름을 얻을 수있는 방법 :

function GetCkText() 
{ 
    var htmlFromEditor = CKEDITOR.instances['editorName'].getData(); 
    // do stuff with htmlFromEditor 
} 

답변

16

하면 하나의 에디터 인스턴스가 가정 :

여기
for (var i in CKEDITOR.instances){ 
    var currentInstance = i; 
    break; 
} 
var oEditor = CKEDITOR.instances[currentInstance]; 

는 자바 스크립트 API에 대한 instances을 말하는 것입니다.

여기에 CKEditor를 정의하는 또 다른 방법이 있습니다. 그때 .fck을 사용하여 인스턴스를 참조 할 수 얼마나

CKEDITOR.replace('fck', { 
    customConfig : prefix + 'js/ckeditor/config.js', 
    height: 600, 
    width: 950 
}); 

editor = CKEDITOR.instances.fck; 

공지 사항 : 여기 FCK '입력은 ID 필드들이있다.

+0

감사합니다. 잘 작동합니다. 그러나, 내가 할 수 있다면, 질문. 내 작품의 대부분은. NET 서버 쪽 (그리고 나는 거의 JS도하지 못했다.), 나는 컬렉션의 객체 컬렉션을 인스턴스화하는 데 익숙하다. 반면에 '나는 당신의 예제에서 에디터 인스턴스이다. 이름. 어떻게 알 수 있습니까?이 구문은 아마도 기본 속성을 암시합니까? – ChrisA

+0

간단하다면 currentInstance의 값은 편집기 텍스트 영역의 HTML ID입니다. 보기'currentInstance = 'editor1''. –

+0

거기에 인스턴스 이름을 할당하는 방법은 무엇입니까 ?? ... ... 나는'CKEDITOR.appendTo ("my_div", {name : "my_editor"}, my_string)' – dsdsdsdsd

0

그럼 내가 찾은 방법 ...하지만 난 몰라 그것 같이 많은 ...

나는 편집기를 추가 한 후, 페이지에 숨겨진 필드 컨트롤을 추가 한, 그 값에 에디터의 클라이언트 ID를 넣어 : 자바 스크립트에서 다음 ..

Dim hdn As New HiddenField 
With hdn 
    .ID = "HiddenField" 
    .Value = itemEditor.ClientID 
End With 
cell.Controls.Add(hdn) 

및 , 나는 숨겨진 피엘을 얻을 수있다. d, 따라서 편집기 이름은 다음과 같습니다.

function GetCkText() 
{ 
    var hdn = document.getElementById("HiddenField"); 
    var editorName = hdn.getAttribute("value"); 
    var editor = CKEDITOR.instances[editorName]; 
    alert(editor.getData()); 
    return false; 
} 

하지만 최소한으로 말하면 세련되지 않습니다. 누구든지 더 좋은 방법을 얻었습니까?

1

다음 코드 :

var allInstances=CKEDITOR.instances; 
for (var i in allInstances){ 
    alert(allInstances[i].name); 
} 

나를 위해 잘 작동합니다.

0

CKEDITOR.appendTo(...)을 사용하는 경우 ckeditor는 내부적으로 인스턴스 이름을 만듭니다. 따라서 이름을 생성 한 직후 해당 이름을 쿼리 한 다음 어딘가에 저장하고 나중에 사용할 수 있습니다. 그런데

var lvo_editor = CKEDITOR.appendTo("my_div" , null , lvs_html) ; 
my_global_var = lvo_editor.name         ; 

는 다음 CKEDITOR.replace(...) 방법을 사용하면 인스턴스 이름을 정의, 이상 버전에서 당신이 할 수있는 4+ 당신이 플러그인에서 인스턴스가 필요한 경우

0

(위 답변 참조) 할 수 있습니다 이.

CKEDITOR.currentInstance 

여기서 나는 ckeditor를 적용한 텍스트 영역의 이름을 알고 싶습니다.

CKEDITOR.currentInstance.name 
1

인스턴스가 하나 뿐이며 그 이름을 모른다면.

CKEDITOR.instances[Object.keys(CKEDITOR.instances)[0]].getData()