我正在尝试为contenteditable创建一个Polymer元素。
我创建了一个contenteditable
div,将this.innerHTML
放在那里,它变得可编辑。聚酯填充物都很好,例如在Firefox中。但它在使用原生Shadow DOM的Chrome 35中不起作用。
嗯,它仍然可以编辑,但document.execCommand
和window.getSelection
都不起作用。
document.execCommand
什么也没做。window.getSelection().getRangeAt(0).toString()
已定义但为空。所以我不能选择样式。
是否有人知道是否可以制作自定义可编辑元素?我究竟做错了什么?也许还有另一种方法可以在现代/未来的网络中与满足一起工作?
答案 0 :(得分:4)
根据规范1选择对于实现者来说有点开放。确实提到了:
因此,选择可能仅存在于一个节点树内,因为它们由单个范围定义。由
window.getSelection()
方法返回的选择永远不会返回阴影树中的选择。阴影根对象的
getSelection()
方法返回此阴影树中的当前选择。
您是否尝试过影子根getSelection()
?
答案 1 :(得分:0)
您可以使用此:
const selection = shadowRoot.getSelection();
const range = selection.getRangeAt(0)
console.log(range.toString())