TinyMCE - 使用getContent(Warp按钮)的selection.setContent

时间:2017-09-20 14:33:58

标签: javascript jquery html tinymce tinymce-4

我想要一个按钮来包装所有标签的内容。

我的代码:

      editor.addButton('MobileToggleArea', {
      text: '<M>',
      icon: false,
      onclick: function (){
          editor.selection.setContent('<div class="mobile-hide">' + editor.selection.getContent({format: 'raw'}) + '</div><div class="mobil-mehr">mehr</div>');
      }
  });

示例:

<p>test</p>
<p>test</p>

结果:

<p>&nbsp;</p>
<div class="mobile-hide">
<p>test</p>
<p>test</p>
<div class="mobil-mehr">mehr</div>
<p>&nbsp;</p>

问题: 它正在添加额外的p标记,为什么?怎么预防?

其他问题(但并非如此糟糕)是仅选择一个p标记:

<div class="mobile-hide">test</div>
<div class="mobil-mehr">mehr</div>

p标签消失了。

插件:char字数自动保存charmap代码全屏图像importcss链接列表粘贴searchreplace tabfocus表模板visualblocks锚点hr不破坏textcolor colorpicker

感谢您提供帮助。

1 个答案:

答案 0 :(得分:0)

我用Jquery解决了这两个问题:

      editor.addButton('MobileToggleArea', {
      text: '<M>',
      icon: false,
      onclick: function (){
          editor.selection.setContent('<div class="mobile-hide">' + editor.selection.getContent({format: 'raw'}) + '</div><div class="mobil-mehr">mehr</div>');
          jQuery(editor.getBody()).find('.mobile-hide').prev().remove('p');
          jQuery(editor.getBody()).find('.mobile-hide').next().next().remove('p');
          jQuery(editor.getBody()).find('.mobile-hide').each(function(){
          if(!jQuery(this).find('*').length){
           jQuery(this).wrapInner('<p></p>');
          }
          });
      }
  });

打开以获得更好的解决方案=)