HTML5 contenteditable粘贴特殊风格

时间:2015-05-22 10:44:01

标签: javascript css html5 contenteditable

我有一个满足的元素,当我粘贴一些文本时,它会保留格式 我也可以粘贴没有格式的文本:

<script>
$('#divedit').bind('paste', function(e){
   $('#textarea').focus();
   setTimeout(function(){
         var text = $('#textarea').val();
         $('#textarea').val('');
         $('#divedit').focus();
         document.execCommand('insertHTML', false, text);
         }, 10);
});
</script>

但我想保留除font-family和color之外的格式。
这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用TreeWalker遍历每个Element节点并删除不想保存的样式。

如果您只是出于性能原因想要浏览粘贴的节点,那么您可以像使用textarea一样使用另一个contenteditable元素来捕获粘贴的内容,然后在节点之后遍历节点。粘贴,然后使用innerHTMLinsertHTML,或者如果您不想重新创建它们,请将其从粘贴捕获器移动到编辑器。

您可能还想在当前光标/选区中放置一些元素,以便在将元素焦点更改为另一个textarea / contenteditable以捕获粘贴时可以将其还原。 Window.getSelection会帮助您解决此问题。