Shadow DOM中的ContentEditable?

时间:2014-05-27 06:16:31

标签: javascript contenteditable polymer web-component shadow-dom

我正在尝试为contenteditable创建一个Polymer元素。

我创建了一个contenteditable div,将this.innerHTML放在那里,它变得可编辑。聚酯填充物都很好,例如在Firefox中。但它在使用原生Shadow DOM的Chrome 35中不起作用。

嗯,它仍然可以编辑,但document.execCommandwindow.getSelection都不起作用。

  • document.execCommand什么也没做。
  • window.getSelection().getRangeAt(0).toString()已定义但为空。
  • 未显示错误。

所以我不能选择样式。

是否有人知道是否可以制作自定义可编辑元素?我究竟做错了什么?也许还有另一种方法可以在现代/未来的网络中与满足一起工作?

2 个答案:

答案 0 :(得分:4)

根据规范1选择对于实现者来说有点开放。确实提到了:

  

因此,选择可能仅存在于一个节点树内,因为它们由单个范围定义。由window.getSelection()方法返回的选择永远不会返回阴影树中的选择。

     

阴影根对象的getSelection()方法返回此阴影树中的当前选择。

您是否尝试过影子根getSelection()

答案 1 :(得分:0)

您可以使用此:

const selection = shadowRoot.getSelection();
const range = selection.getRangeAt(0)
console.log(range.toString())