2012-06-14 5 views
5

Sto cercando di implementare un editor WYSIWYG personalizzato utilizzando contenteditable<div>.option_root_block in TinyMCE

Uno dei problemi principali che sto affrontando è il modo incoerente in cui i browser gestiscono ENTER tasto (interruzioni di riga). Inserti cromati <div>, inserti di Firefox <br> e inserti IE <p>. Stavo dando un'occhiata a TinyMCE e ha un'opzione di configurazione chiamata forced_root_block. L'impostazione di forced_root_block a div funziona effettivamente su tutti i principali browser. Qualcuno sa come l'opzione forced_root_block in TinyMCE è in grado di raggiungerla attraverso i browser?

+0

+1 buona domanda – Thariama

risposta

2

Nella fonte TinyMCE (/tiny_mce/classs/dom/DomParser.js) troverete la seguente:

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; 
      }; 
     }; 

Questo richiede ovviamente cura di creare elementi di blocco radice. Sono sicuro al 99% che tinymce gestisca il tasto "INVIO" da solo e interrompe il comando di propagazione/browser predefinito.

+0

Sì, si è corretto. Ho dato un'occhiata più approfondita al codice sorgente di tinymce. Hanno una classe chiamata "EnterKey.js". La funzione principale di questa classe è 'handleEnterKey'. Tinymce intercetta il – Amrit

+0

grazie per la conferma, questo è quello che pensavo – Thariama