从窗口中选择的文本是空的

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


冉冉说
浏览 119回答 1
1回答

缥缈止盈

您在检索之前删除了该值。range.deleteContents();const selectedContent = sel.toString();如果在删除之前翻转这两行并存储内容,它将按预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript