Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从窗口中选择的文本为空_Javascript_Angular_Dom - Fatal编程技术网

Javascript 从窗口中选择的文本为空

Javascript 从窗口中选择的文本为空,javascript,angular,dom,Javascript,Angular,Dom,我正在尝试将所选字符串包装在两个字符之间 例如:选择“测试”并单击更改按钮将所选文本更改为“atestb” 问题是,我可以替换所选文本,但window.getSelection().toString()将变为空。 这是我正在使用的功能 replaceSelectedText(startTag, endTag) { let sel, range; console.log(window.getSelection().toString()) if (window.getSe

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

在检索之前删除该值

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

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

在检索之前删除该值

range.deleteContents();
const selectedContent = sel.toString();
如果在删除前翻转这两行并存储内容,它将按预期工作