加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

TinyMCE中的forced_root_block选项

发布时间:2020-12-14 02:12:36 所属栏目:Linux 来源:网络整理
导读:我正在尝试使用contenteditable div实现自定义WYSIWYG编辑器. 我面临的一个主要问题是浏览器处理ENTER键击(换行符)的方式不一致. Chrome插入 div,Firefox插入 br和IE插入 p.我正在看看TinyMCE,它有一个名为forced_root_block的配置选项.将forced_root_block
我正在尝试使用contenteditable< div>实现自定义WYSIWYG编辑器.

我面临的一个主要问题是浏览器处理ENTER键击(换行符)的方式不一致. Chrome插入< div>,Firefox插入< br>和IE插入< p>.我正在看看TinyMCE,它有一个名为forced_root_block的配置选项.将forced_root_block设置为div实际上适用于所有主要浏览器.有人知道TinyMCE中的forced_root_block选项如何能够跨浏览器实现吗?

解决方法

在tinymce源(/tiny_mce/classs/dom/DomParser.js)中,您将找到以下内容:

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

        whiteSpaceElements = schema.getWhiteSpaceElements();
        startWhiteSpaceRegExp = /^[ trn]+/;
        endWhiteSpaceRegExp = /[ trn]+$/;
        allWhiteSpaceRegExp = /[ trn]+/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’键击本身并停止传播/默认浏览器命令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读