我是一个有角度的初学者,我已经在这个问题上工作了几天,但我还没有完全解决它。我正在尝试创建一个指令,当用户突出显示某些文本时,会在选择周围自动创建一个ui-bootstrap工具提示。我有以下代码几乎可以做我想要的。
span
上面代码的问题在于它用工具提示替换了所选文本的每个实例 - 我只想将工具提示放在所选的实际文本周围。
我看过像this one这样的帖子,它们展示了如何用以下方式用function surroundSelection() {
var span = document.createElement("span");
span.style.fontWeight = "bold";
span.style.color = "green";
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(span);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
元素替换所选文本
{{1}}
但我不认为这种方法与工具提示等ui-bootstrap元素兼容。我非常坚持这一点,所以任何建议都会非常感激。
答案 0 :(得分:1)
当您从selection
获取匹配文本并从那里继续前进时,原始上下文已经丢失 - 如果您有多个{0},则无法知道您选择了哪个foo
你的段落。
为了达到您的需要,您需要处理selection
本身,这样您就可以找到它以删除和添加新内容。