javascript - HTML5 contenteditable 粘贴特殊样式

标签 javascript css html contenteditable

我有一个 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>

但我想保留除字体系列和颜色之外的格式。
这可能吗?

最佳答案

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

如果您出于性能原因只想遍历粘贴的节点,您可以像使用 textarea 那样做一个解决方案,而是使用另一个 contenteditable 元素来捕获粘贴的内容,遍历粘贴后的节点,然后使用 innerHTMLinsertHTML,或者如果您不想重新创建它们,则将它们从粘贴捕捉器移至编辑器。

您可能还想在当前光标/选择所在的位置放置一些元素,以便在将元素焦点更改为另一个 textarea/contenteditable 时可以恢复它以捕捉粘贴。 Window.getSelection将帮助您解决这个问题。

关于javascript - HTML5 contenteditable 粘贴特殊样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394674/

相关文章:

JavaScript 无法在浏览器中运行

javascript - 获取之前的 URL 并在 Javascript 中显示在页面上

javascript - 在迭代时追加字符串

html - 在 HTML 和 CSS 中创建内联跨度类

html - 将 <H2> 与我的文本 <p> 一起放置,同时使用 "text-align:center;"设置样式不起作用

javascript - 动态生成 Mocha 测试

javascript - Css - 是否可以在调整屏幕大小时移动元素以使其适合屏幕

javascript - 如果字段为空 - 做一件事情,如果不做其他事情(jQuery vs 浏览器字段自动完成)

javascript - 将 DOM 元素附加到 D3

javascript - 从 li 元素获取值属性