【发布时间】:2022-01-21 21:47:00
【问题描述】:
想象一下我有一些元素
<p>Hello</p>
用户在e 和l 字母之间单击(在此位置放置插入符号),在此单击时,我想在这些字母之间插入一些element。会是
<p>He<b>Here</b>llo</p>
有什么办法吗?
代码示例:
const selection = document.getSelection();
const parent = selection.baseNode.parentNode;
const b = document.createElement('b')
b.innerHTML = 'Here'
parent.innerHTML = 'he'+ b + 'llo'
它不会像你理解的那样工作,我需要这种情况的解决方案。我可以确定插入符号的位置
selection.focusOffset
这意味着我必须获取选择文本,并在插入符号位置插入 <b>Here</b> 元素。我也试图找到将元素转换为字符串的方法,但还没有找到。我的意思是document.createElement(tagName) 将其设为字符串,然后我可以将其插入文本中
【问题讨论】:
-
是的,但是你需要发布minimal reproducible example。我不想写所有的JavaScript,工作量太大,所以发布一些损坏的JS,我会尝试修复它。
-
确定在单击文本节点时将插入符号放在何处并不是一个容易解决的问题——有一个non-standard 方法,但它并不普遍可用。 (剩下的问题是微不足道的,只要你想出插入它的确切位置,就可以插入任何你想要的东西。)
-
更新了一点,如果有帮助的话
标签: javascript