javascript - 从窗口中选择的文本为空

标签 javascript angular dom

我正在尝试将选定的字符串包装在两个字符之间 例如:选择“test”并单击更改按钮会将所选文本更改为“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

最佳答案

您将在检索该值之前将其删除。

range.deleteContents();
const selectedContent = sel.toString();

如果您翻转这两行并在删除之前存储内容,它将按您的预期工作。

关于javascript - 从窗口中选择的文本为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58102848/

相关文章:

javascript - 如何使用 jquery 获取 Xml 属性?

angular - 如何在 typescript 的 Angular2 Highcharts 中添加鼠标滚轮代码

angular - 在ngrx中订阅store时如何访问之前的状态和当前状态并进行比较?

javascript - 如何在 javascript DOM api 中获取具有给定条件的子节点?

javascript - 在javascript中测试未定义的方法的差异

javascript - 如何模拟慢速客户端(浏览器)?

android - Ionic2 导航栏在 android 中左右带有图标

javascript - 从另一个子窗口获得焦点子窗口

javascript - 扩展 DOM 元素添加自定义变量(如在输入节点中)

javascript - 如何将png图像数据数组转换为视频文件