我正在尝试使用contenteditable
<div>
.
我面临的主要问题之一是浏览器处理ENTER击键(换行符)的方式不一致。Chrome 插入<div>
、Firefox 插入<br>
和 IE 插入<p>
。我正在查看 TinyMCE,它有一个名为forced_root_block
. 设置forced_root_block
为div
实际适用于所有主要浏览器。有人知道forced_root_block
TinyMCE 中的选项如何跨浏览器实现吗?
我正在尝试使用contenteditable
<div>
.
我面临的主要问题之一是浏览器处理ENTER击键(换行符)的方式不一致。Chrome 插入<div>
、Firefox 插入<br>
和 IE 插入<p>
。我正在查看 TinyMCE,它有一个名为forced_root_block
. 设置forced_root_block
为div
实际适用于所有主要浏览器。有人知道forced_root_block
TinyMCE 中的选项如何跨浏览器实现吗?
在 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 = /^[ \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”键击并停止传播/默认浏览器命令。