Forced_robot option in TinyMCE

I am trying to implement my own WYSIWYG editor with contenteditable <div>.

One of the main issues I encounter is inconsistency in how browsers handle keystrokes ENTER(linebreaks). Chrome Inserts <div>, Firefox Inserts , <br>and IE Inserts <p>. I took a look at TinyMCE and it has a configuration option forced_root_block. Setting forced_root_blockon divreally works in all major browsers. Does anyone know how forced_root_blockan option in TinyMCE can achieve this in browsers?

+5
source share
1 answer

In the tinymce source (/tiny_mce/classs/dom/DomParser.js) you will find the following:

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

, , . 99% , tinymce 'ENTER' / .

+2

All Articles