我试图将选定的字符串包装在两个字符之间,例如:选择“测试”并单击更改按钮会将选定的文本更改为“atestb”问题是,我能够替换选定的文本,但 window.getSelection ().toString() 是空的。这是我使用的功能 replaceSelectedText(startTag, endTag) { let sel, range; console.log(window.getSelection().toString()) if (window.getSelection) { sel = window.getSelection(); if (sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); const selectedContent = sel.toString(); console.log("Selected Content ") console.log(selectedContent) let replaceDiv = startTag + selectedContent; replaceDiv=endTag ? replaceDiv + endTag : replaceDiv; range.insertNode(document.createTextNode(replaceDiv)); } } else if ((document as any).selection && (document as any).selection.createRange) { range = (document as any).selection.createRange(); range.text = startTag; } }链接到 Stackblitz https://stackblitz.com/edit/angular-idyhj5?file=src%2Fapp%2Fapp.component.ts
1 回答
![?](http://img1.sycdn.imooc.com/545869390001b87802200220-100-100.jpg)
缥缈止盈
TA贡献2041条经验 获得超4个赞
您在检索之前删除了该值。
range.deleteContents();
const selectedContent = sel.toString();
如果在删除之前翻转这两行并存储内容,它将按预期工作。
添加回答
举报
0/150
提交
取消