0

我的页面上有一个富文本编辑器,特别是这个:

https://github.com/davidroyer/vue2-editor网站

我需要将此编辑器的内容复制到不同网站上的不同富文本编辑器中。

我可以通过选择编辑器的内容并复制它来手动执行此操作。当我粘贴到目标编辑器中时,我得到了正确的结果:文本的格式与原始编辑器中的格式相同,包括链接等。

问题是,我需要使用“复制到剪贴板”按钮执行相同的操作。我已尝试直接在编辑器元素上使用此选项:

editor.select();document.execCommand(“副本”);

…但剪贴板中没有任何内容。我尝试将内容放入常规输入元素,然后从中执行上面的相同操作,但当我在目标编辑器中粘贴时,我得到的是原始HTML,而不是格式化的文本。

简而言之,如果内容编辑器是。。。

一条线路两条线路

…我需要它像这样粘贴到目标中(我重申,在另一个网站上)。。。

一条线路两条线路

……而不是这样:

<p>一行</p><p>两行</p>
4
  • 来自MDN:注意:document.execCommand()仅在作为用户交互的一部分调用时返回true。developer.mozilla.org/en-US/docs/Web/API/document/execCommand 评论 2021年2月16日15:31
  • 这意味着什么?它发生在按钮点击。。。 评论 2021年2月17日11:27
  • 尝试在之后添加调试断点选择()这样你可以直观地看到它是否被选中。然后你就会知道问题是否在于选择()行或中的.execCommand()行。
    – 扎奇亚
    评论 2021年2月19日14:52
  • @Zachiah我在控制台上看到一个错误editor.select()不是函数.但如果我console.log(编辑器)它正确地记录了元素。我不知道该怎么办。 评论 2021年2月19日15:00

1答案1

重置为默认值
4
+50

我在这方面已经努力了一段时间,终于做到了!这个vue2-编辑器使用内容可编辑的 div公司因为它是文本编辑器。这就是为什么你不能使用选择()方法。使用

console.log(“选择”);const e=document.querySelector(“#app.ql编辑器”);const textNode=e.childNodes[0];const r=document.createRange();const startIndex=0;r.setStart(e,startIndex);r.setEnd(e,e.childrens.length);const s=window.getSelection();s.删除所有范围();s.addRange(r);document.execCommand(“复制”)

我不是视觉专家,所以我不使用裁判,我相信你应该这样做在这里是一个例子,说明了我的意思。

0

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.