将双br标签转换为tinymce 4中的p标签

时间:2017-04-24 16:18:24

标签: javascript regex tinymce-4

我想要做的是将双br转换为p in tinymce 4这就是我放入我的tinymce配置

        force_br_newlines : true,
        force_p_newlines : false,
        forced_root_block: false,

        language : 'fr_FR',
        setup : function(ed) {

                ed.on('onPostProcess', function(ed, o) {
                    o.content = o.content.replace(/<br\s?\/?><br\s?\/?>/gi, '</p><p>');
                });

但没有任何事情发生,我不知道我希望在tinymce 4中有可能 例如,如果我有:

This is a test 1<br /><br />
This is a test 2<br /><br />
This is a test 3<br /><br />
This is a test 4<br /><br />

它会自动转换为:

<p>This is a test 1</p>
<p>This is a test 2</p>
<p>This is a test 3</p>
<p>This is a test 4</p>

1 个答案:

答案 0 :(得分:0)

使用DOM时远离Regular Expressions。使用Node API更改文档。

您可以检查接下来的两个兄弟姐妹是否休息并包装文本内容 有一个段落,同时 - 删除休息。

&#13;
&#13;
Dispozice
&#13;
replaceDoubleBreaks(document.getElementById('content'));

function replaceDoubleBreaks(target) {
  var children = target.childNodes;
  if (children.length > 0) {
    var currIndex = 0, currNode = children[currIndex];
    while (currNode != null) {
      // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
      if (currNode.nodeType === Node.TEXT_NODE) {
        if (isBreak(currNode.nextSibling) && isBreak(currNode.nextSibling.nextSibling)) {
          var p = document.createElement('p');
          p.innerHTML = currNode.textContent.trim();
          currNode.replaceWith(p);
          for (var i = 0; i < 2; i++) target.removeChild(children[currIndex + 1]);
        }
      }
      currIndex++;
      currNode = children[currIndex];
    }
  }
}

function isBreak(el) {
  return el && el.nodeType === Node.ELEMENT_NODE && el.tagName.toLowerCase() === 'br';
}
&#13;
p { font-style: italic; }
&#13;
&#13;
&#13;

以下是使用TinyMCE

的示例
  

https://jsfiddle.net/MrPolywhirl/sucLumb2/

相关问题