javascript - 使用 Javascript 复制富编辑器的内容
问题描述
我的页面上有一个富文本编辑器,特别是这个:
https://github.com/davidroyer/vue2-editor
我需要将此编辑器的内容复制到不同网站上的不同富文本编辑器中。
我可以通过选择编辑器的内容并复制它来手动执行此操作。当我粘贴到目标编辑器时,我得到了正确的结果:文本的格式就像在原始编辑器中一样,包括链接等。
问题是,我需要使用“复制到剪贴板”按钮来做同样的事情。我已经尝试直接在编辑器元素上使用它:
editor.select();
document.execCommand("copy");
...但剪贴板中没有任何内容。我尝试将内容放入常规输入元素中,然后在上面执行相同的操作,但是当我粘贴到目标编辑器中时,我得到的是原始 HTML 而不是格式化的文本。
总之,如果内容编辑器是这样的……
One line
Two lines
...我需要它像这样粘贴到目标中(我重申,在不同的网站上)...
One line
Two lines
...而不是这样:
<p>One line</p><p>Two lines</p>
解决方案
我已经为此工作了一段时间,我终于明白了!使用它vue2-editor
的contenteditable
div
文本编辑器。这就是为什么您不能使用该.select()
方法的原因。采用
console.log("selecting");
const e = document.querySelector("#app .ql-editor");
const textNode = e.childNodes[0];
const r = document.createRange();
const startIndex = 0;
r.setStart(e, startIndex);
r.setEnd(e, e.children.length);
const s = window.getSelection();
s.removeAllRanges();
s.addRange(r);
document.execCommand("copy")
我不是 vue 专家,这就是我不使用 refs 的原因,我相信你应该在这里举一个例子来说明我的意思。
推荐阅读
- atom-editor - 仅在 Atom 中删除文本文件的尾随空格
- javascript - 我想将一个值更新为 Javascript 中已存在键的 json 对象
- python - 使用调试控制台时出错:DeprecationWarning:自 IPython 6.0 以来,`use_readline` 参数已被弃用和忽略
- machine-learning - 从 NN 模型中提取的权重大小变得高于模型
- javascript - 根据 JavaScript HTML 和 CSS 中选中的单选按钮显示特定的 div
- angular - 如何在 Angular 4 中创建多个路由器
- php - CakePHP saveMany 内部服务器错误 500
- react-native - React-native 在入门项目中不存在捆绑 URL
- r - Shiny switchInput:在不同的计算机上呈现不同的效果
- self-join - 自加入多个帐户相同的ID