2012-06-14 1 views
5

contenteditable<div>을 사용하여 맞춤 WYSIWYG 편집기를 구현하려고합니다.TinyMCE의 forced_root_block 옵션

내가 직면 한 주요 문제 중 하나는 브라우저가 일관성없는 방식으로 처리하는 것입니다. 키 스트로크 (줄 바꿈). Chrome은 <div>을 삽입하고 Firefox는 <br>을 삽입하고 IE는 <p>을 삽입합니다. TinyMCE를 살펴 보았는데 forced_root_block이라는 구성 옵션이 있습니다. forced_root_block에서 div으로 설정하면 모든 주요 브라우저에서 실제로 작동합니다. 누군가가 TinyMCE의 forced_root_block 옵션이 브라우저에서 어떻게 구현되는지 알고 있습니까?

rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block; 

     whiteSpaceElements = schema.getWhiteSpaceElements(); 
     startWhiteSpaceRegExp = /^[ \t\r\n]+/; 
     endWhiteSpaceRegExp = /[ \t\r\n]+$/; 
     allWhiteSpaceRegExp = /[ \t\r\n]+/g; 

     function addRootBlocks() { 
      var node = rootNode.firstChild, next, rootBlockNode; 

      while (node) { 
       next = node.next; 

       if (node.type == 3 || (node.type == 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type'))) { 
        if (!rootBlockNode) { 
         // Create a new root block element 
         rootBlockNode = createNode(rootBlockName, 1); 
         rootNode.insert(rootBlockNode, node); 
         rootBlockNode.append(node); 
        } else 
         rootBlockNode.append(node); 
       } else { 
        rootBlockNode = null; 
       } 

       node = next; 
      }; 
     }; 

이 분명히 루트 블록 요소를 생성을 담당 : TinyMCE를 소스 (/tiny_mce/classs/dom/DomParser.js) 다음을 찾을 수에서

+0

+1 좋은 질문입니다. – Thariama

답변

2

. 저는 tinymce가 'ENTER'키 스트로크 자체를 처리하고 전파/기본 브라우저 명령을 중지한다는 것을 99 % 확신합니다.

+0

네, 맞습니다. 나는 tinymce 소스 코드에 대해 자세히 살펴 보았다. 그들은 'EnterKey.js'라는 클래스를 가지고 있습니다. 이 클래스의 main 함수는 'handleEnterKey'입니다. Tinymce는 – Amrit

+0

을 확인해 주셔서 감사합니다. 그게 내가 생각한 것입니다. – Thariama

관련 문제