2012-10-10 2 views
2

ckeditor 3.6.4에서 각 img & 입력 요소에 대한 사용자 지정 id 특성을 추가하려고합니다. 지금까지 나는이img 및 입력 요소에 대한 사용자 지정 id 특성 추가

 CKEDITOR.on('instanceReady', function(event) {  
      var editor = CKEDITOR.instances.editor; 

      editor.dataProcessor.htmlFilter.addRules(
      { 
       elements: { 
        $: function (element) { 
         if ((element.name == 'img' || element.name == 'input') && CKEDITOR.instances.editor.mode == 'wysiwyg') { 
          if (!element.attributes.id){ 
           var g = createID(); 
           alert('new id: ' + g); 
           element.attributes.id = g; 
          } 
         } 

        } 
       } 
      }); 
     }); 

같은 id 속성을 처리 할 수 ​​dataProcessor.htmlFilter을 추가하고 난 비주얼 편집기에서 새 텍스트 필드를 추가 할 때 나는 새로운 ID를 얻는다. 그러나 내가 소스 모드로 설정하면 모드는 여전히 'wysiwyg'이지 'source'가 아니며 새로운 ID를 제공합니다.

어떻게하면 이중 동작을 방지 할 수 있습니까?


몇 가지 테스트를했다. 어떻게 든이

CKEDITOR.instances.editor.on('mode', function() { 
      // Code to execute when the user switches editing modes 
       alert('Changed to: ' + CKEDITOR.instances.editor.mode); 
      }); 

를 추가 그 htmlFilter 규칙 후에 발생합니다.

답변

1


mode property
사용자 정의 플랜 B

에 필요한 위젯 가서 플러그인의 id 속성을 추가했다. 쉽고 빠르다.

2

규칙에 편집기 모드 검사를 추가 할 수 있습니다.

if ((element.name == 'img' || element.name == 'input') && editor.mode == "wysiwyg") { 
    if (!element.attributes.id){ 
     var g = createID(); 
     alert('new id: ' + g); 
     element.attributes.id = g; 
    } 
} 

나는 "편집기"를 사용하는 올바른 개체 이름이 될 것인지 확실하지 않다, 당신은 CKEDITOR.currentInstance.mode
getMode() 방법이있다 사용할 수 있습니다.


여기에 언급 된 항목의 일부 API 참조 같습니다 currentInstance property
getMode() method

+0

시도했지만 이상한 일이 벌어지고 있습니다. 나는 에디터 모드에서 계속 'wysiwyg'를 얻는다. 내 질문에 더 많은 데이터를 추가하겠습니다. – Vili

관련 문제