如何在Firefox中复制和粘贴包含自定义元素的contentedable元素的内容?

时间:2018-05-22 20:29:48

标签: javascript html css firefox contenteditable

这是一个非常特殊的问题。我使用德国网站gutefrage。本网站使用修改后的Quill作为编辑器。 Here您可以使用编辑器。如果按Enter键,则会启动一个新段落。如果按SHIFT + enter,则会触发换行符。但是,换行没有使用BR - 元素实现,但它们使用名为gf-br的自定义HTML元素。因此,人们不能只复制像诗一样的文本,因为每个换行符都会自动转换为段落。

这就是为什么,在我将文本插入编辑器之前,我决定编写一个“准备”文本的工具。该工具会将每br转换为gf-br。如果彼此之后有两个br,则它们仅在一个br中转换。这就是我所拥有的:

function modify() {
  var text = document.getElementById('text').innerHTML;
  text = text.split(/<br[\s]?[\/]?>[\s]?<br[\s]?[\/]?>/).join('[<[<break>]>]');
  text = text.split(/<br[\s]?[\/]?>/).join('<gf-br></gf-br>');
  text = text.split('[<[<break>]>]').join('<br />');
  document.getElementById('text').innerHTML = text;
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

#btn {
  width: 100%;
  height: 10vh;
}

#text {
  width: calc(100% - 10px);
  height: calc(90vh - 10px);
  border: 2px solid #000;
  margin: 5px;
  padding: 5px;
}
<button id="btn" onclick="modify();">Modify</button>
<div id="text" contenteditable></div>

一个人插入任何文字,例如G。 this,进入可疑的div。现在,按下按钮并将结果复制到gutefrage编辑器中。它应该与以前完全一样。

问题

这与Chrome完美配合。但是,Firefox会删除任何自定义HTML元素,如gf-br。我试图在这个元素中插入任何内容,我也尝试在非contenteditable元素中显示结果。它不起作用。

有没有机会在不使用用户脚本的情况下做任何事情?如果您有疑问或需要任何其他信息,请询问。

0 个答案:

没有答案