如何删除除粘贴上的p标签以外的其他html标签?

时间:2014-06-20 07:02:33

标签: javascript jquery html copy-paste tinymce-4

我的内联文本编辑器有点麻烦。这是简单的用户有权复制textarea div上的粘贴。没问题。但我不想让他们粘贴html与图像和div元素。

我用过

valid_elements: "p,br,b,i,strong,em",

它删除了p tags内容的样式。

要做到这一点,但根据我的要求,这不是解决方案。

我也试过paste_postprocess,但它没有对最新版本的tinymce做任何事情。

我也尝试了许多已在此社区发布的解决方案。但它们都不适合我,因为我使用的是最新版本tinymce 4.0.26

我知道我可以通过禁用右键单击来阻止复制粘贴。但这不是一个好主意。

有没有办法从html内容中仅使用p tag过滤style

因此,如果有人使用on copy paste的最新版本tinymce工作。

请帮忙。

2 个答案:

答案 0 :(得分:3)

使用valid_elements选项时,您需要明确告诉TinyMCE要保留哪些属性。例如,使用您之前的valid_elements列表,您可能会执行以下操作:

valid_elements: "p[style],br,b,i,strong,em"

这告诉TinyMCE仅保留列出的标记,并保留为style标记定义的任何p属性。或者,您也可以通过执行以下操作来包含特定元素的所有属性:

valid_elements: "p[*],br,b,i,strong,em"

同样,这告诉TinyMCE保留列出的所有标签,但对于p标签,请保留每个属性。

有关此valid_elements选择器语法的详细信息,请查看this page

答案 1 :(得分:-1)

  

糟糕的情况是:当我用img,div,p
来粘贴编辑器中的内容时   然后在粘贴内容后显示框内的所有元素
  (在编辑之后)

我只关注整个过程paste-> savetext。问题是tinymce在粘贴内容时没有做任何事情,但是当我调用tinymce函数

tinymce.activeEditor.getContent();

它为我提供了没有img,div的纯内容。所以我想为什么不去做那个过程on paste

所以我只是简单地在tinymce setup部分添加了这段代码:

setup : function(ed) {
        ed.on('paste',function(e){
           setTimeout(function(){
               var textContent = tinymce.activeEditor.getContent();
                   tinymce.activeEditor.selection.setContent(textContent.trim());
           },200);  
        });
   }

现在一切正常。

并感谢@Nate Kibler的帮助。